function useSafeSetState<T>(
initialState?: T
): [T, React.Dispatch<React.SetStateAction<T>>] {
const [state, setState] = useState(initialState);
const mountedRef = useRef(false);
useEffect(() => {
mountedRef.current = true;
return () => {
mountedRef.current = false;
};
}, []);
const safeSetState = useCallback(
args => {
if (mountedRef.current) {
return setState(args);
}
},
[mountedRef, setState]
);
return [state, safeSetState];
}
Чтобы после анмаунта сетстейт не срабатывал
спасибо, стало понятнее.
Обсуждают сегодня