Серьезно, я отчаянно пытаюсь понять, в чем проблема. Я не могу найти ответ несколько дней!
React.StrictMode
API заставляет наш setState
вызывать дважды, верно? Если он выдает ошибку, это означает, что где-то в нашем обратном вызове setState
нечисто. Итак, какой именно?
setOrganization((initialValue) => {
const newOrganization = { ...initialValue };
const oldIssues = [...newOrganization.repository.issues.edges];
const newIssues = [...data.data.organization.repository.issues.edges];
newOrganization.repository.issues.edges = [...newIssues, ...oldIssues];
return newOrganization;
});
При первом вызове oldIssues
возвращает ожидаемое значение, например [{id: issue1}, {id: issue2}]
. newIssues
значение, например, [{id: issue3}]
Но при втором вызове oldIssues
странным образом превращается в комбинацию oldIssues
и newIssues
. (второй вызов, oldIssues
УЖЕ [{id: issue1}, {id: issue2}, {id: issue3}]
).
Создание второго newOrganization.repository.issues.edges
значения удвоило newIssues
. [{id: issue1}, {id: issue2}, {id: issue3}, {id: issue3}]
Полный сценарий можно найти здесь, в строке 101: https://pastebin.com/ugsrBRTM