如何用useEffect控制重新运行

Aji*_*mar 5 reactjs react-hooks

我对 useEffect 函数有一点疑问。我试图用 useEffect 来阻止不必要的情况。问题是我可以用条件控制 useEffect 吗?有可能吗?示例代码,

这是正常的代码,

useEffect(() => {
   // do something
},[variableName]); 
Run Code Online (Sandbox Code Playgroud)

我的期望代码和问题是,

useEffect(() => {
   // do something
},[variableName == 5]); // if it's true, Does the useEffect control the re-run?
Run Code Online (Sandbox Code Playgroud)

它就像一个 if 条件,是否可以停止重新运行。我知道这很奇怪,但只是为了我清楚的理解。

谢谢。

RTW*_*RTW 5

不,你不能。每次变量更改时都会运行 useEffect。

您有两个选择:

  1. 停止 useeffect 内的函数执行
    useEffect(() => {
       if (variableName!=5) return // do nothing if condition is not met
       // do something
    },[variableName]);
Run Code Online (Sandbox Code Playgroud)