ren*_*kre 5 reactjs react-hooks use-effect
useEffect我想知道仅当子组件包含在父组件中时,在子组件内部使用来加载数据是否有意义(或可能) 。
在子组件内我有以下代码:
useEffect(() => {
if (props.rubricItems.length < 1)
props.fetchRubricsData(courseId);
}, [])
Run Code Online (Sandbox Code Playgroud)
但这不会触发任何调用。
您是否建议我获取父组件中的所有数据?我不想避免加载未使用的数据。有什么建议么?
但这不会触发任何调用。
为什么会出现这种情况?
发生这种情况的原因是因为您有一个空的依赖项数组[]。这意味着它只会在组件安装时运行,而不会再运行(如componentDidMount)。而且因为它只运行一次,在那一次,props.rubricItems.length < 1是错误的。
仅当子组件包含在父组件中时才加载数据
如果您有某种逻辑来决定是否渲染子组件,则可以useEffect在父组件中添加一个将调用该提取的组件。
例如
您根据某些变量来渲染组件。
{ foo && <ChildComponent />}
Run Code Online (Sandbox Code Playgroud)
因此,您可以添加一个在值更改useEffect时运行的程序foo。
useEffect(() => {
if(foo){ // you can add you logic here
// fetch the data
}
}, [foo]) // it will only run this when foo changes
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10227 次 |
| 最近记录: |