Мне нужно опубликовать ответ из-за кода, но я не на 100% уверен в том, что вам нужно, поэтому я построю правильный ответ с вашими отзывами:)
Итак, Моя первая идея: ты не можешь разделить свои эффекты на две React.useEffect
? Примерно так:
export default function JsonRpc({ task, dispatch }) {
...
useEffect(() => {
...
setFetchData(...);
}, [task]);
useEffect(() => {
...
}, [data]);
..
}
Теперь, если мое понимание верно, это пример временной шкалы событий:
- Из-за обновления на
task
вы запустите первый useEffect
, который может setFetchData()
; - Из-за обновления на
fetchData
и AX IOS сделан вызов, который обновляет data
(свойство в контексте); - При этом вы вводите второй
useEffect
, где у вас есть обновленный data
, но NO вызов setFetchData()
, таким образом, без цикла;
Затем, если вы хотите (но не можете) поместить data
в массив зависимостей вашего useEffect
, я могу представить, что два useEffect
, которые я написал, имеют некоторый общий код: вы можете написать общий метод, вызываемый обоими useEffect
s, НО важно, чтобы вызов setFetchData()
находился за пределами этого распространенного метода.
Дайте мне знать, если вам нужна дополнительная проработка.