为了账号安全,请及时绑定邮箱和手机立即绑定

小白,请教各位大佬!React hook 使用useEffect 如何判断多个值都改变了才执行内部方法?万分感谢

小白,请教各位大佬!React hook 使用useEffect 如何判断多个值都改变了才执行内部方法?万分感谢

九州编程 2019-10-25 21:41:09
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
}
                            
查看完整回答
反对 回复 2019-10-25
?
神不在的星期二

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;
                            
查看完整回答
反对 回复 2019-10-25
  • 2 回答
  • 0 关注
  • 424 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信