Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将对象数组扩展到对象数组_Javascript_Reactjs_Redux_React Redux - Fatal编程技术网

Javascript 将对象数组扩展到对象数组

Javascript 将对象数组扩展到对象数组,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我将redux与react一起使用,并尝试将从api获取的对象数组附加到redux状态(对象数组) 这是我的减速机 import { GET_BOOKS } from "../actions/types"; const initialState = { books: [ 0:{}, 1:{}, ] }; export default function(state = initialState, action) { switch (action.type) { case GE

我将redux与react一起使用,并尝试将从api获取的对象数组附加到redux状态(对象数组)

这是我的减速机

import { GET_BOOKS } from "../actions/types";
const initialState = {
  books: [
 0:{},
 1:{},
]
};

export default function(state = initialState, action) {
  switch (action.type) {
    case GET_BOOKS:
      console.log(action.payload.results);
      return { ...state };
    default:
      return state;
  }
}
我的api正在返回

results : [
0: {somevalue},
1: {somevalue}
]

我不知道如何将值分散到新数组中。

只需分配属性,它就会覆盖旧的属性

export default function(state = initialState, action) {
  switch (action.type) {
    case GET_BOOKS:
      console.log(action.payload.results);
      // spread current state and inaddition to that set new books data
      // which overwrites books property from old state
      return { ...state, books : action.payload.results };
      // spread --^^^^^^^^^^^^^^^^^^^^^^^^^^^---
    default:
      return state;
  }
}

更新:如果要将其与现有的连接起来,请执行以下操作

export default function(state = initialState, action) {
  switch (action.type) {
    case GET_BOOKS:
      console.log(action.payload.results);
      return { ...state, books : [...state.books, ...action.payload.results] };
    default:
      return state;
  }
}

仅供参考:状态部分用于复制其他状态属性(假设存在其他状态值)

您需要分析当前状态和来自api的数据

return {  books: [...state.books, ...action.payload.results] };
完整代码

import { GET_BOOKS } from "../actions/types";
const initialState = { books: [] };

export default (state: Object = initialState, action: Object) => {
  switch (action.type) {
    case GET_BOOKS:
      return { books: [...state.books, ...action.payload.results] };
    default:
      return state;
  }
};



我不能这样做,因为api是一个分页器,所以它返回更多结果,但不再返回整个列表。您需要在问题中提供更多信息,然后假设有效负载结果不在books数组中,您可以简单地将上面的action.payload.books替换为[…action.payload.results,…state.books]@AlexBroadwin:我认为您希望连接,然后使用更新的解决方案问题是,有效负载的结果是一个对象数组,因此它只是使书籍成为数组中的一个对象数组检查此项-您的
initialState
声明有语法错误。请修复您问题中的语法错误(最好是格式错误),以便我们了解您的实际问题。还请解释您想要什么,而不是试图用您未能实现的解决方案来表达您想要什么。问题是有效负载的结果是一个对象数组,所以它只是使书籍成为数组中的一个对象数组