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