useEffect更新它自己的依赖关系,导致无限循环



我的组件显示一个包含用户的表。用户被加载(getOverviewCitizensToday()(到redux状态,并作为组件作为道具传递(mapStateToProps(。要请求用户列表,我需要指定offset(users.length(,因此我的useEffect需要users作为依赖项。

useEffect(() => {
async function fetchData(): Promise<void> {
const query: NewOverviewServiceUserQueryParameters = {
offset: users.length,
sort: transformSortingParams(sorting.order, sorting.orderBy) || undefined,
}
await getOverviewCitizensToday(query)
}
fetchData()
}, [getOverviewCitizensToday, sorting.order, sorting.orderBy, users.length])

这会导致无限循环,因为getOverviewCitizensToday()会更新用户,从而导致useEffect重新运行。。。

避免这种无限循环的最佳方法是什么?

useEffect(() => {
async function fetchData(): Promise<void> {
console.log('fetch')
const query: NewOverviewServiceUserQueryParameters = {
offset: users.length,
sort: transformSortingParams(sorting.order, sorting.orderBy) || undefined,
}
await getOverviewCitizensToday(query)
}
fetchData()
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [sorting.order, sorting.orderBy])

我有过类似的场景,我希望它只在某些依赖项上执行,但useEffect对它使用的其他变量很谨慎。额外的评论将删除警告,尽管我知道这不是最佳做法。

相关内容

  • 没有找到相关文章

最新更新