useEffect React 挂钩将在每次更改时运行传入的函数。这可以优化为仅在所需属性更改时才调用。
如果我想从 componentDidMount
调用初始化函数而不是在更改时再次调用它怎么办?假设我想加载一个实体,但加载函数不需要来自组件的任何数据。我们如何使用 useEffect
钩子来做到这一点?
class MyComponent extends React.PureComponent {
componentDidMount() {
loadDataOnlyOnce();
}
render() { ... }
}
使用钩子,这可能看起来像这样:
function MyComponent() {
useEffect(() => {
loadDataOnlyOnce(); // this will fire on every change :(
}, [...???]);
return (...);
}
原文由 Dávid Molnár 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果你只想在初始渲染后运行给
useEffect
的函数,你可以给它一个空数组作为第二个参数。