请教个hooks问题

#1

useEffect里引用了useState的值
但是在useEffect里useState的值不更新,除非添加到useEffect的依赖里,但是我不想useEffect执行多次(比如说绑定事件和设置定时器)
又将存储值的地方从useState换成了useRef(即使useEffect不依赖,拿到的值也是最新的),但是useRef改变了页面却又不刷新?不知道有同学遇到过这个问题么,有什么好的方案么?

#2

这种情况我一般还是在 useState 里用 useEffect 的 deps 参数尽量控制的. 真的多刷新了我也没啥办法, 还好不是直接会导致明显的性能消耗.

#3

ok,thx

#4

第一种, 联合一下 state和ref

const [state, _setState] = useState(val);
const ref = useRef(state);
const setState = useCallback((v)=> {
  _setState(v);
  ref.current = v;
}, [])
useEffect(()=> {
   if (ref.current === 4){
      setState(ref.current + 1);
   }
}, []);

第二种, 把判断条件放在外面计算

const [state, setState] = useState(val);
const condition = state === 4;
useEffect(()=> {
   if (condition){
      setState(0);
   }
}, [condition]);
1 Like
#5

:+1:谢谢!!!