在 SPFx Web 部件的主要组件中,我有一个在 React.useEffect 中运行的数据加载
const [jobsGets, setJobsGets] = React.useState(0);
React.useEffect(() => {
{Some code to get data from SharePoint}
});
}, [jobsGets]);
因此,当"jobsGets"的值发生变化时,就会发生刷新,对吗?
此组件调用另一个组件,最后一个组件具有应通过更改"jobsGets"刷新的事件。 如果我写一个幻想,把它传给每一代组件的道具,
它永远结束在主组件中运行。所以这不是一个好的解决方案。 如何从孙子组件setJobsGets(jobsGets+1);
?
欢迎任何提示。 谢谢
您可能正在使用useEffect
更新 grandChild 的作业,该作业在装载和每次更新上运行。 如果[]
参数传递第二个空数组,则此更新将仅在首次渲染后运行(如果这是您的具体情况(,避免重新触发:
// at some granchild
useEffect(() => { ...logic here }, [])
如果 useEffect 应该在特定参数的更新之后运行,则将该参数作为参数传递给数组。 useEffect 将仅在对[]
上设置的参数依赖项的更改上运行。
useEffect(() => { ...logic here }, [param])
你也可以看看 useContext 在深树上更好地传递状态。