Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- export function useAsyncState<T>(initialState: T): [T, (arg0: (arg0: T) => T | T) => Promise<T>] {
- const [state, setState] = React.useState(initialState);
- const setAsyncState = React.useCallback((stateUpdate: (arg0: T) => T | T): Promise<T> => {
- return new Promise<T>((resolve) => {
- setState((prevState: T) => {
- let newState = null;
- if (typeof stateUpdate === "function") {
- newState = stateUpdate(prevState);
- } else {
- newState = stateUpdate;
- }
- resolve(newState);
- return newState;
- });
- });
- }, []);
- return [state, setAsyncState];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement