Reacthook使用useEffect如何判断多个值都改变了才执行内部方法?useEffect第二个参数是一个数组,判断其中的值变化才执行内部方法,但是有没有什么好的办法让他判断多个值都变了才执行内部方法?(就比如判断a和b都变了才去todo,不要那种在数组里判断a再在里面判断b的方法...)useEffect(()=>{//todo....},[a,b]);
2 回答
长风秋雁
TA贡献1757条经验 获得超7个赞
functionApp(){const[a,setA]=useState(0)const[b,setB]=useState(0)constchanges=useRef(0)useEffect(()=>{if(changeNum.current===3){//dosomething...changeNum.current=0}},[a,b])constonAChange=(value)=>{setA(value)changeNum.current|=1}constonBChange=(value)=>{setB(value)changeNum.current|=2}return}
神不在的星期二
TA贡献1963条经验 获得超6个赞
importReact,{useState,useEffect,useRef}from'react';constOne=_=>{const[a,setA]=useState(0);const[b,setB]=useState(0);constref=useRef({a,b});useEffect(()=>{let{a:prevA,b:prevB}=ref.current;console.log('更新前:',prevA,prevB);console.log('更新后:',a,b);if(prevA!==a&&prevB!==b){console.log('update!');ref.current={a,b};}},[a,b]);return(<>{a+b}
setA(d=>d+1)}>ChangA setB(d=>d+1)}>ChangB >);};exportdefaultOne;
添加回答
举报
0/150
提交
取消