如何在 React 的 if 语句中使用 useEffect

Ven*_*noz 5 reactjs react-hooks

如果变量是某个值,我想在 useEffect 的依赖项中添加 if 语句。例如:

let counter = 5;


    useEffect(() => {
        socket.on("counter", counter => {
            setCounter(counter);
        });
        return () => socket.off('counter', counter);
    }, [socket])


useEffect(() => {
//do something
}, counter = 0)
Run Code Online (Sandbox Code Playgroud)

这个“counter=0”最终显然是错误的。那么如何在计数器为 0 时运行第二个 useEffect 呢?

Bri*_*son 7

你不能做你所描述的事情(或者至少不应该做),所以你只需要改变你的逻辑。useEffect您需要在变量useEffect更改时运行并检查回调的值,而不是仅在变量等于另一个值时运行。

let counter = 5;


useEffect(() => {
  if (counter == 0) {
    //do something
  }
}, [counter])
Run Code Online (Sandbox Code Playgroud)

另请注意,这=始终是一项作业。要检查相等性,您需要=====