useEffect如何知道是哪个deps触发的副作用?
useEffect(()=>{
console.log('effect','触发对象:')
},[a,b,c])
如上代码,在effectCallback
中,我如何知道是哪个deps触发的函数
回复
1个回答
test
2024-06-25
import { useState, useEffect, useRef } from 'react';
function MyComponent() {
const [a, setA] = useState(0);
const [b, setB] = useState(0);
const [c, setC] = useState(0);
const prevA = useRef(a);
const prevB = useRef(b);
const prevC = useRef(c);
useEffect(() => {
if (prevA.current !== a) {
console.log('a has changed');
}
if (prevB.current !== b) {
console.log('b has changed');
}
if (prevC.current !== c) {
console.log('c has changed');
}
// 更新引用值,用来下次对比
prevA.current = a;
prevB.current = b;
prevC.current = c;
}, [a, b, c]);
return (
<div>
{/* some UI and buttons to change state */}
</div>
);
}
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容