reactjs - 如何使用useEffect控制重新运行

标签 reactjs react-hooks

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

useEffect(() => {
   // do something
},[variableName]); 
我的期望代码和问题是,
useEffect(() => {
   // do something
},[variableName == 5]); // if it's true, Does the useEffect control the re-run?
它就像一个 if 条件,是否可以停止重新运行。我知道这很奇怪,但只是为了我的清晰理解。
谢谢你。

最佳答案

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

您有两个选择:

1) 在 useEffect 中停止函数执行

useEffect(() => {
   if (variableName!=5) return // do nothing if condition is not met
   // do something
},[variableName]);

2) 声明一些 useState 并仅在您想运行 useEffect 时使用函数更改它
useEffect(() => {
   // do something
},[runEffect]);

const [runEffect, setRunEffect] = useState(true)

function runEffect(){
 setRunEffect(!runEffect)
}

关于reactjs - 如何使用useEffect控制重新运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59018780/

相关文章:

javascript - 在 OPTIONS 响应后使获取 API 与 CORS 一起工作

reactjs - React Navigation 5 - 深度链接不接受给定路径并按预期解析为状态

Reactjs useMemo 钩子(Hook)行为类似于 componentDidMount

javascript - useCallBack 执行两次

javascript - 单页应用程序 : If I'm not posting form values to the server and I'm not using any HTML validation, 我可以停止使用 <form> 标签吗?

javascript - 如何解决 React 中的意外标记 (<) 错误?

reactjs - 全局 Redux 状态值

reactjs - 使用 React hooks 的后台服务

javascript - React 初学者在将 Material-UI 示例应用到 React 项目时遇到问题。 State 与 Hooks 的工作方式不同

javascript - 如何向客户端设置 CORS header