Redux reducer 没有更新 immutable.js Redux store
Redux reducer is not updating the immutable.js Redux store
我似乎无法修改 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)
vepo.some 没有更新到 200,它保持 10
我的 redux store 不会从 reducer 更新。
应该可以。当我在这里设置断点时:
这里我是在控制台中操作状态,并没有持久化:
您正在尝试改变不可变对象。当您执行 vepo.set('some', 200)
时,它不会修改 vepo
,它 returns 一个具有您分配的值的新对象。
你可以试试这个:
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
在 npm runkit 或您的本地环境中尝试一下。新对象包含更新后的值。
注意:我修改了代码,因此它可以 运行 隔离。
我似乎无法修改 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)
vepo.some 没有更新到 200,它保持 10
我的 redux store 不会从 reducer 更新。
应该可以。当我在这里设置断点时:
这里我是在控制台中操作状态,并没有持久化:
您正在尝试改变不可变对象。当您执行 vepo.set('some', 200)
时,它不会修改 vepo
,它 returns 一个具有您分配的值的新对象。
你可以试试这个:
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
在 npm runkit 或您的本地环境中尝试一下。新对象包含更新后的值。
注意:我修改了代码,因此它可以 运行 隔离。