javascript - Redux:这算作变异状态吗?

标签 javascript angular redux

在 Angular2 (NgRedux) 中使用 Redux 来更新/设置订单条目。可以改变代理变量,然后将其对象分配给状态吗?

在我的数据缩减器中:

case DataActions.UPDATE_ORDER:
  var updatedItem
  var updatedState = state.orders
  for(var i = 0; i < state.orders.length; ++i) {
    if(state.orders[i]['key'] === action.payload.key) {
      updatedItem = state.orders[i]
      updatedItem.name = action.payload.name
      updatedItem.items = action.payload.items
    }
  }
  updatedState[i] = updatedItem
  return Object.assign({}, state, {
    orders: updatedState
  })

最佳答案

您的“代理变量”只是对同一对象的另一个引用,所以是的,您直接改变该数组中的项目。

为了正确地进行不可变更新,应该复制每个级别的嵌套。 Redux 文档在 Immutable Update Patterns 中提供了两个常见错误的示例以及如何正确执行此操作。 .

关于javascript - Redux:这算作变异状态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40753022/

相关文章:

Javascript - 替换字符串中的一定数量的字符并保留其余字符

javascript - 内联事件处理程序中的神秘变量 "URL"

asp.net-mvc - Angular4 + MVC + cli + 使用从 cli 构建命令生成的 dist 文件夹进行部署

javascript - Angular - 解析器和组件不共享注入(inject)的服务?

javascript - 为什么Redux.js在init上多次启动reducer函数?

javascript - Redux reducer 不会更新商店

javascript - 为什么我们在 redux 中使用展开运算符

javascript - window.onload 在 Android WebView 中不起作用

javascript - Angular react 形式 *ngFor 循环,无法读取未定义的 'property'

javascript - 对具有不同组件的多个部分/ View 进行 react ,异步加载