【发布时间】:2020-01-31 03:56:51
【问题描述】:
我正在使用 React 将一个函数从父组件传递给子组件,并尝试在 useEffect() 挂钩中运行它。
家长
function Parent(props) {
function alertMe() {
alert('me');
}
render (
<div>
<Child alertMe={alertMe} />
</div>
);
}
儿童
function Child(props) {
const { alertMe } = props;
useEffect(() => {
alertMe();
}, [alertMe]);
render (
<div>
// stuff
</div>
);
}
如果我将 alertMe 作为子组件的 useEffect() 中的依赖项删除,它只会触发一次,但我会收到警告:
React Hook useEffect 缺少依赖项:'alertMe'。要么包含它,要么移除依赖数组 react-hooks/exhaustive-deps
alertMe 函数在加载时在 Parent 组件中定义一次,所以我不明白为什么它会在 Child 组件中无休止地运行。它不会像状态一样改变。
如何将alertMe 添加为useEffect() 依赖项但仍仅运行一次?
【问题讨论】:
-
从
useEffect的第二个参数数组中删除它。如果你给 useEffect 一个空数组作为第二个参数,它只会在挂载时运行。 -
@skellertor 是的,但后来我收到了警告。
标签: reactjs dependency-injection use-effect