Reactjs 如何使用useEffect控制重新运行

Reactjs 如何使用useEffect控制重新运行,reactjs,react-hooks,Reactjs,React Hooks,我对useffect函数有点怀疑。我正试图阻止这种不必要的情况发生。问题是我是否可以根据条件控制使用效果,是否可能?。示例代码 这是正常代码 useEffect(() => { // do something },[variableName]); 我的期望代码和问题是 useEffect(() => { // do something },[variableName == 5]); // if it's true, Does the useEffect control

我对useffect函数有点怀疑。我正试图阻止这种不必要的情况发生。问题是我是否可以根据条件控制使用效果,是否可能?。示例代码

这是正常代码

useEffect(() => {
   // do something
},[variableName]); 
我的期望代码和问题是

useEffect(() => {
   // do something
},[variableName == 5]); // if it's true, Does the useEffect control the re-run?
这就像一个if条件,是否有可能停止重新运行。我知道这很奇怪,但只是为了我清楚的理解


谢谢。

如果满足某个条件,您可以在功能组件中设置boolian状态,并将其设置为true,然后将该状态变量用作useEffect挂钩的第二个参数。

否。您不能。每次提供的变量更改时,都将运行useEffect

您有两个选择:

1) 在useffect内停止函数执行

useEffect(() => {
   if (variableName!=5) return // do nothing if condition is not met
   // do something
},[variableName]);
2) 仅当您希望运行useEffect时,才声明一些useState并使用函数更改它

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

const [runEffect, setRunEffect] = useState(true)

function runEffect(){
 setRunEffect(!runEffect)
}

你想要实现什么?无论如何,渲染完成后将运行
useffect
。此外,也无法停止渲染。因此,请更好地描述您认为应该对您有什么帮助您不能
停止
渲染,您希望通过此实现什么?我是否可以使用第二个参数中的条件来控制重新运行。您能否给出一个示例代码片段以供清楚理解?。