Возникли проблемы в редукторе, чтобы собрать все данные API вместе - PullRequest
0 голосов
/ 01 февраля 2019

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

Теперь проблема остается - я могу получить первый набор данных, но никогда не объединяю данные всех вызовов API.Я уверен, что я делаю что-то глупое там.Я плохо застрял здесь, инвестируя здесь и днем ​​и ночью.Любая помощь будет высоко ценится здесь.

Редуктор:

import { RECEIVED_NEWS } from './actions';
export const news = (state = [], action) => {
//console.log('action data is '+JSON.stringify(action));
switch (action.type) {
case RECEIVED_NEWS:
    return [...state, action.apidata];
default:
    return state;
}
};

Действие:

export const RECEIVED_NEWS = 'RECEIVED_NEWS';
export const addNews = apidata => ({
type: RECEIVED_NEWS,
apidata
});

Пример данных API: https://codebeautify.org/online-json-editor/cb73c978 или https://pastebin.com/rS8Aj4ex Каталог объекта, который я печатаюс консолью http://navgujaratsamay.co.in/wp-content/uploads/2019/02/Screenshot-2019-02-01-at-5.09.41-PM.png

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

1 Ответ

0 голосов
/ 01 февраля 2019

Вам нужно сделать:

return [...state, ...action.apidata]

, поскольку action.apidata - это тоже массив, его нужно распространять, иначе он будет вложенным.Если apidata не был массивом просто объектом, то нет необходимости распространять его.

Например:

> let arr1 = [1, 2, 3, 4, 5]
> let arr2 = [6, 7, 8, 9, 0]
> [...arr1, arr2]  // wrong
< [1, 2, 3, 4, 5, [6, 7, 8, 9, 0]]  // gives a nested array

> [...arr1, ...arr2]  // correct
< [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]  // merges properly

> let num = 10
> [...arr1, num]  // no spreading required when it's not an array
< [1, 2, 3, 4, 5, 10]  // merges properly
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...