Я думаю, это происходит потому, что useEffect
вызывается во время первого рендеринга, он выполняет dispatch
, который вызывает ваш редуктор, который возвращает новый объект { dataContextInitialState }
.
Новый объект передается вашему компоненту, useEffect
проверяет, является ли объект dataContext
таким же, как в предыдущем рендере, но он отличается, потому что это новый объект, поэтому он повторно выполняет useEffect
и у вас есть l oop.
Возможное решение
Насколько я понимаю, с этим фрагментом кода
const dataContextInitialState = { test: 1 };
case "update":
return {
dataContextInitialState,
};
ваше состояние становится следующим:
{
dataContextInitialState: {
test: 1
}
}
Я предполагаю, что вы хотели иметь состояние, которое представляет собой объект с ключевыми именами test
, вы можете попробовать изменить свой код следующим образом:
case "update":
return dataContextInitialState;