useEffect如何知道是哪个deps触发的副作用?

作者站长头像
站长
· 阅读数 4
useEffect(()=>{
    console.log('effect','触发对象:')
},[a,b,c])

如上代码,在effectCallback中,我如何知道是哪个deps触发的函数

回复
1个回答
avatar
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>
    );
}
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容