Разбиение на страницы - загрузка отменяет предыдущее состояние - PullRequest
1 голос
/ 29 января 2020

У меня проблема с разбиением на страницы в моем приложении. У пользователей есть список транзакций, поэтому мы решили создать медленную загрузку в списке разделов. API работает правильно и получает данные, однако. каждый раз, когда я получаю новые данные, предыдущее состояние перезаписывается новым состоянием.

Это мой редуктор:

export default function(state = {}, { type, sequence, payload } = {}) {
  switch (type) {
    case TRANSACTIONS.FETCH: //used when fetching the first page
      return sequence === REQUEST.SUCCESS ? payload : state;

    case TRANSACTIONS.FETCH_MORE: { //fetching next pages
      return sequence === REQUEST.SUCCESS ? { ...state, ...payload } : state;
    }
  }
  return state;
}

Данные транзакций выглядят так:

transactions: {
data: {},
links:{},
meta:{}
}

полезная нагрузка Снимок экрана состояние Снимок экрана

1 Ответ

0 голосов
/ 29 января 2020

Ваш случай более сложный, чем вы ожидали :(. Ваш data объект в состоянии является массивом. Когда вы выводите sh ваше состояние полезной нагрузки, вы заменяете законченный data объект новым, data объект. Вам нужна лучшая структура редуктора для этого сценария:

export default function(state = {}, { type, sequence, payload } = {}) {
  switch (type) {
    case TRANSACTIONS.FETCH: //used when fetching the first page
      return sequence === REQUEST.SUCCESS ? payload : state;

    case TRANSACTIONS.FETCH_MORE: { //fetching next pages
      return sequence === REQUEST.SUCCESS ? {
        ...state,
        data: [...state.data, ...payload.data], // <--- concat the data arrays IMMUTABLE way.
        links: payload.links, // <--- it don`t know what you want here, replace or modify, please share more about this.
        meta: payload.meta // <--- here too.
      } : state;
    }
  }
  return state;
}
...