Запретить отображение данных для другого объекта в Redux - PullRequest
0 голосов
/ 04 июля 2018

В моем приложении React/Redux есть timelineReducer, который позволяет мне централизованно управлять временной шкалой различных объектов, таких как проекты, задачи и т. Д.

Недавно обнаружена ошибка, которую я раньше не замечал, поскольку для ее возникновения требуется ряд обстоятельств.

Когда я запрашиваю временную шкалу родительского объекта, я вызываю действие, которое выполняет вызов API и устанавливает массив timeline: [] в timelineReducer.

Если, однако, я запрашиваю Project A и быстро передумаю и перехожу к Task B, и у меня случается медленное сетевое соединение в то время, я получаю данные временной шкалы, принадлежащие Project A, даже если я Я на странице Task B.

У меня есть процедуры очистки, которые я выполняю для метода жизненного цикла componentWillUnmount(), но похоже, что процедура очистки завершается до того, как приходит сетевой ответ, и в моем редукторе устанавливается массив timeline: [], и я получаю неправильные данные .

Кто-нибудь сталкивался с такой ситуацией? Прежде чем пытаться заново изобрести колесо, я хотел посмотреть, существует ли стандартный подход в этих ситуациях.

1 Ответ

0 голосов
/ 04 июля 2018

Я столкнулся с подобной ситуацией, когда я добавил эталонный объект вместе с временной шкалой [], например, {project:'A',timeline:[]} был моей полезной нагрузкой для редуктора. Таким образом, это означает, что эта временная шкала относится к проекту A, и какой компонент, который использует этот массив, сначала проверит значение проекта, чтобы подтвердить его массив проекта A

...