javascript - 如何在加载某个特定变量后仅在 React 中触发一次 useEffect

标签 javascript reactjs react-hooks use-effect

我正在尝试在 React 中使用 useEffect 钩子(Hook)来仅触发一些函数一次。我知道这通常可以通过做

useEffect(() => {
    // some functions
    }
}, [])

但是,函数需要加载一些值。所以,我只希望这个 useEffect 在值不为空时只触发一次。

useEffect(() => {
    // some functions
}, [theValue])

这是我尝试过的方法,但我知道只要 theValue 发生变化,它就会被触发。

theValue 不为空时,如何将我的 useEffect 更改为只运行一次?

最佳答案

如果效果已经被触发,您可以使用 React ref 来保存一个 bool 值,并将其与条件测试相结合,以确保所有依赖项都已满足以触发效果。

const effectTriggeredRef = React.useRef(false);

React.useEffect(() => {
  if (!effectTriggeredRef.current && /* deps conditions */) {
    effectTriggeredRef.current = true;
    // trigger some functions
  }
}, [...deps]);

关于javascript - 如何在加载某个特定变量后仅在 React 中触发一次 useEffect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68214505/

相关文章:

javascript - ReactJS - 使用 useRef 和将变量放在组件之外有什么区别?

javascript - 以函数式风格编写 React 组件

javascript验证

javascript - 当路由到特定路由 Angularjs 时运行函数?

reactjs - Uncaught TypeError : Object(. ..) 不是 React、Formik 和 Webpack 的函数

javascript - react Hook : get state of useState inside a listener

javascript - 如何使用 react 钩子(Hook) react.js 一次更新多个状态

javascript - react 路由器不在服务器上重定向

javascript - 为什么我不能调用这个函数(javascript/jquery)

javascript - Reactjs:请求的资源上不存在 'Access-Control-Allow-Origin' header