首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用es6的扩展操作符在第2阶段加载程序中使用react redux应用程序

使用es6的扩展操作符在第2阶段加载程序中使用react redux应用程序
EN

Stack Overflow用户
提问于 2017-03-23 14:15:25
回答 2查看 222关注 0票数 0

我正在使用ES6扩展操作符在我的react redux应用程序中,就像这样。

代码语言:javascript
复制
var defaultState = {val:1, items:[]};
export default function(state=defaultState, action){
  switch(action.type){
    case 'ADD_BOOK':
    state.val = 0;
    return {
      ...state,
      items:action.payload.data.result
    };

问题是每次我从分配给项目的action.payload.data.result中获得新的数据。我想要连接上一个状态的数据。有人能帮忙吗。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-23 14:31:06

这应该能行。

代码语言:javascript
复制
return {
  ...state,
  items: [
    ...state.items,
    ...aciton.payload.data.result
  ]
}
票数 2
EN

Stack Overflow用户

发布于 2017-03-23 14:31:43

因此,这里您真正需要做的是将现有的项和从有效负载返回的项连接起来。

假设是这样的,那么您需要从旧的items数组和new元素数组中创建一个新数组。您还希望避免改变现有状态。

从减速机返回一个全新的状态。通过克隆现有状态并添加新项数组来做到这一点:

代码语言:javascript
复制
case 'ADD_BOOK':
    var newState = Object.assign({}, state, {val:0}); // clones the existing state and adds our new val
    newState.items = newState.Items.concat(action.payload.data.result);
    return newState;

有更清晰的方法可以使用扩展语法或库(例如不可变)来实现这一点,但是这个示例将显式地实现我们需要做的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42978643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档