我正在使用一个需要更新数据表并使用 fetch 从 API 获取值的函数。当页面上传时,数据与 useEffect 完美结合,但我希望在我删除或将项目添加到表中时上传它,因为它进入不定式循环,现在它不起作用。
const [data,setData] = useState();
useEffect(() => {
PersonService.getAllPersonList()
.then(res => {
setData(res)
console.log(res)
}
)
}, [data]);
退后一步,考虑一下您在语义上告诉代码要做什么。useEffect
基本上意味着,“只要此依赖项发生变化,就执行此操作。”
你的情况是什么操作?
data
状态值。什么是依赖?
data
状态值。所以你告诉代码填充data
(根据定义改变的操作data
)任何时候data
都改变了。
为什么?
由于唯一的依赖是data
那么听起来您只想在首次安装组件时发生一次。为此,您将使用一个空的依赖数组:
useEffect(() => {
// your operation
}, []);
在那之后,任何时间data
都变了,那你为什么要重新获取data
?您的本地副本已更改。您不想保留这些更改吗?您是否也更改了服务器上的数据并希望完全刷新所有内容?无论哪种情况,这都不是您想要使用的方法。
最有可能的是,无论哪个操作修改了data
服务器上的源,都应该返回更新后的数据,然后调用该操作的客户端代码可以data
使用该返回值进行更新。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句