0.20.1 • Published 3 years ago
@terra-dev/use-resolve-last v0.20.1
useResolveLast()
https://anchor-storybook.vercel.app/?path=/story/packages-use-resolve-last--basic
import { useResolveLast } from '@terra-dev/use-resolve-last';
const delay = (value: number, ms: number) =>
new Promise((resolve) => setTimeout(() => resolve(value), ms));
function Component() {
const [resolve, result] = useResolveLast<number>();
useEffect(() => {
resolve(1); // resolve(T)
resolve(delay(2, 1000)); // resolve(Promise<T>)
resolve(delay(3, 100));
resolve(delay(4, 300));
resolve(delay(5, 10)); // last resolve
}, []);
// result will be 5
// previously resolves will be ignored
return <div>should "{result}" is 5</div>;
}
It is helpful when you make a fetch requests by user input.
__stories__/use-resolve-last.stories.tsx
import { useResolveLast } from '@terra-dev/use-resolve-last/index';
export default {
title: 'packages/use-resolve-last',
};
const someFetch = (value: string) =>
new Promise<number>((resolve) =>
setTimeout(() => {
console.log('fetch result is', value);
resolve(parseInt(value));
}, Math.random() * 3000),
);
export const Basic = () => {
const [resolve, result] = useResolveLast<number>(() => 0);
return (
<div>
<input
type="number"
defaultValue={0}
onChange={({ target }) => resolve(someFetch(target.value))}
/>
<p>the latest resolve value is "{result}"</p>
</div>
);
};
0.20.1
3 years ago
0.20.0
3 years ago
0.19.0
3 years ago
0.18.0
3 years ago
0.17.0
3 years ago
0.17.1
3 years ago
0.16.0
3 years ago
0.16.0-alpha.4
3 years ago
0.16.0-alpha.1
3 years ago
0.16.0-alpha.3
3 years ago
0.16.0-alpha.2
3 years ago
0.14.0
3 years ago
0.15.0
3 years ago
0.13.0
3 years ago
0.13.1
3 years ago
0.12.2
3 years ago
0.10.0
3 years ago
0.11.0
3 years ago
0.10.1
3 years ago
0.12.0
3 years ago
0.10.2
3 years ago
0.8.0
3 years ago
0.12.1
3 years ago
0.5.0
3 years ago
0.4.0
3 years ago
0.7.0
3 years ago
0.6.0
3 years ago
0.3.0
3 years ago
0.2.0
3 years ago
0.1.0
3 years ago