javascript - React.js“useEffect”不定式循环
问题描述
我正在使用一个需要更新数据表并使用 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
使用该返回值进行更新。
推荐阅读
- python - 运行 pylint 时语法无效
- php - 在服务器端数据表 laravel 5 中添加自动编号
- javascript - Javascript;选择嵌套元素会引发“不是函数”错误
- asp.net-core - Netcore 2.1 OData @odata.context
- php - Laravel:路由和控制器
- perl - 编辑了cgi文件,然后网站停止了
- wpf - WPF Webbrowser 行为怪异
- angular - 在Angular2中相同组件的TS文件的类之间共享字符串以在模板中打印
- visual-studio-code - VScode 删除自己
- php - WordPress 国家/地区列表不见了