Javascript 将对象数组扩展到对象数组
我将redux与react一起使用,并尝试将从api获取的对象数组附加到redux状态(对象数组) 这是我的减速机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
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
声明有语法错误。请修复您问题中的语法错误(最好是格式错误),以便我们了解您的实际问题。还请解释您想要什么,而不是试图用您未能实现的解决方案来表达您想要什么。问题是有效负载的结果是一个对象数组,所以它只是使书籍成为数组中的一个对象数组