Redux reducer不会更新immutable.js Redux存储

Ben*_*ins 5 ecmascript-6 immutable.js react-native redux react-redux

我似乎无法修改immutable.js记录,这是我的应用程序的redux存储.

let makeVepo: RecordFactory<any> = Record({
  product: new makeProduct(),
  menu: new makeMenu(),
  formControls: new makeFormControls(),
  some: 10
})

export const vepo = new makeVepo()

vepo.set('some', 200)
Run Code Online (Sandbox Code Playgroud)

vepo.some不会更新到200,它会保持10

我的redux商店不会从reducer更新.

它应该工作.当我在这里放一个断点时:

在此输入图像描述

在这里,我在控制台中操纵状态,并且它不会持久化:

在此输入图像描述

Fac*_*teo 3

您正在尝试改变一个不可变的对象。当您这样做时vepo.set('some', 200),它不会修改vepo,而是返回一个具有您分配的值的新对象。

你可以试试这个:

const { Record } = require('immutable');

const makeVepo = Record({
  product: 'function',
  menu: 'function',
  formControls: 'function',
  some: 10
})

const vepo = new makeVepo()

const newObject = vepo.set('some', 200)
console.log(vepo.toJS()) // `some` is still 10
console.log(newObject.toJS()) // `some` is 200
Run Code Online (Sandbox Code Playgroud)

在npm runkit或您的本地环境中尝试一下。新对象包含更新后的值。

注意:我调整了代码,以便它可以单独运行。