Published on

useUpdate和useUnmount

Authors
  • avatar
    Name
    李丹秋
    Twitter

useUpdate

import { useCallback, useState } from 'react';

const useUpdate = () => {
    const [, setState] = useState({});
    return useCallback(() => setState({}), []);
};
export default useUpdate;

这个hook原理很简单,我们在想要触发渲染,就必须调用setState方法,所以这里提供了一个使用不到的state,只提供set方法,用来更新视图

useUnmount

import { useEffect } from 'react';
import useLatest from '../useLatest';

const useUnmount = (fn: () => void) => {
    const fnRef = useLatest(fn);
    useEffect(
        () => () => {
            fnRef.current();
        },
        []
    );
};

export default useUnmount;

useEffect 中return一个函数,是在组件卸载的时候执行。这个hook就是为了省去useEffect中,卸载的流程。 这里使用useLatest主要还是为了获取最新的函数,不使用的话,在一些异步的情况下,会获取不到正确的函数