我才刚刚开始做出反应,所以请耐心等待。
我有一个父反应组件,用户,它包含另一个这样的反应组件:
<UsersTable onSelectRecord={onSelectRecord} />
'onSelectRecord' 是在 Users 中定义的函数。
UseraTable 定义为:
const UsersTable = props => {...}
其 useEffect hook 实现如下:
useEffect(() => {
fetchUsers(1);
}, [props.updateTime]);
我从中理解的是,每当 updateTime 属性发生变化时就会执行 useEffect 钩子。
但在用户中,我没有看到传递这样的属性。
那么它是如何工作的呢?
由于 updateTime 没有作为 prop 传递给 UsersTable,因此 useEffect 只会在组件安装时运行,而不是在之后运行,因为 updateTime 没有变化。
以下是具体情况:
UsersTable 中的 useEffect 依赖于 props.updateTime。每当 updateTime 发生变化时,它就会运行。
在 Users 组件中,您仅将 onSelectRecord 传递给 UsersTable:
由于未传递 updateTime,因此 props.updateTime 未定义。 useEffect 将在组件挂载时运行一次,但由于 undefined 未改变,因此不会再次运行。如果您希望 useEffect 根据 updateTime 运行,则需要从 Users 中传递它。否则,它只会在初始渲染时运行。