封装useEffect 首次不执行

172 阅读1分钟

问题

在react 中通常用useEffect监听值,与vue watch类似,但是useEffect不如watch灵活,不能控制初始化是否监听。

解决方案

import { useEffect,useRef } from 'react';

export default const useDidUpdateEffect = (fn: any,inputs: any) => {
   const didMountRef = useRef(false);
   useEffect(() => {
   if (didMountRef.current) fn();
   else didMountRef.current = true;
   }, inputs);
};