Мой компонент отображает таблицу с пользователями. Пользователи загружаются (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 ...
Как лучше всего избежать этого бесконечного цикла?
users
, что запускает повторную выборку ... - person olefrank   schedule 03.08.2020getOverviewCitizensToday
? - person Yousaf   schedule 03.08.2020useEffect
, где вы можете использовать в качестве зависимости только ту переменную, которая должна запускать ваш useEffect. - person AskMen   schedule 03.08.2020users.length
, поэтому вы можете создать:useEffect(() =>your code , [users.length])
, также вы можете создать еще одинuseEffect(() =>your code , [admins.length])
, где вы получите всех администраторов с сервера. Идея состоит в том, что не обязательно создавать только одинuseEffect()
для всех асинхронных действий, вы можете разделить логику на разные функции. - person AskMen   schedule 03.08.2020useEffect(() => fetchUsers() , [users.length])
- person olefrank   schedule 04.08.2020