如何区分useEffect上的多个状态变化挂钩第二个参数?

时间:2020-10-13 07:46:35

标签: reactjs react-hooks

这是我的代码:

useEffect(() => {
  if(a change){ do something a}
  if(b change){ do something b}
}, [a,b])

如何区分a或b之间的状态变化?

1 个答案:

答案 0 :(得分:1)

首先,您应该为每个操作集中一个useEffect

useEffect(() => {
  // do something a
}, [a])

useEffect(() => {
  // do something b
}, [b])

但是对于您的问题,use usePrevious会将其与先前的值进行比较:

const aRef = usePrevious(a);

useEffect(() => {
  // Or use custom comparator compare(a,aRef.current)
  if (a !== aRef.current) {
    // a changed
    aRef.current = a;
  }
}, [a ,b])