981377660LMT / ts

ts学习
6 stars 1 forks source link

usePrevious 保存上一轮渲染中的某个值 #442

Open 981377660LMT opened 7 months ago

981377660LMT commented 7 months ago
/** 保存上一轮渲染的值. */
function usePrevious<T> (value: T, compare?: (pre: T | undefined, cur: T) => boolean): T | undefined {
  const ref = useRef<T>();

  useEffect(() => {
    const needUpdate = typeof compare === 'function' ? compare(ref.current, value) : true;
    if (needUpdate) {
      ref.current = value;
    }
  });

  return ref.current;
}