我正在设置redux来管理我所有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 调用,并且我成功调用了商店,但每次只获得最后一次调用数据。
你需要做:
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