javascript - 如何使用 React useEffect 仅调用一次加载函数

标签 javascript reactjs react-hooks use-effect

useEffect React hook 将在每次更改时运行传入的函数。可以对其进行优化,使其仅在所需属性更改时调用。

如果我想从 componentDidMount 调用一个初始化函数,而不是在更改时再次调用它怎么办?假设我想加载一个实体,但加载函数不需要来自组件的任何数据。我们如何使用 useEffect Hook 实现这一点?

class MyComponent extends React.PureComponent {
    componentDidMount() {
        loadDataOnlyOnce();
    }
    render() { ... }
}

有了钩子(Hook),这看起来像这样:

function MyComponent() {
    useEffect(() => {
        loadDataOnlyOnce(); // this will fire on every change :(
    }, [...???]);
    return (...);
}

最佳答案

如果您只想在初始渲染后运行给 useEffect 的函数,您可以给它一个空数组作为第二个参数。

function MyComponent() {
  useEffect(() => {
    loadDataOnlyOnce();
  }, []);

  return <div> {/* ... */} </div>;
}

关于javascript - 如何使用 React useEffect 仅调用一次加载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53120972/

相关文章:

javascript - 可拖动且可调整大小的 Div

javascript - 如何获取任意父div被点击的子div的id值

javascript - 从存储的事件对象重新触发 javascript 事件

javascript - 与 JSX 语法中的解构赋值相混淆

javascript - 使用 react-hooks-testing-library 在 React Hooks 中模拟 Axios

javascript - 在另一个数据表的子行中添加嵌套数据表

javascript - 如何使用反引号将 react 元素插入数组

javascript - 按价格对对象数组进行排序(从最低到最高)

javascript - 如何解决这个错误 "Uncaught TypeError: inputArgs[0].match is not a function"

javascript - 两个对象数组与 lodash 的区别