【问题标题】:Redux reducer is not updating the immutable.js Redux storeRedux reducer 没有更新 immutable.js Redux 存储
【发布时间】:2018-10-02 19:59:12
【问题描述】:

我似乎无法修改 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 存储不会从 reducer 更新。

它应该工作。当我在这里设置断点时:

这里我在控制台中操作状态,它不会持续存在:

【问题讨论】:

  • 我不太熟悉这种声明 reducer 的方式。 updateSearchResultsMapRegion 是从减速器调用的吗?您也可以发布该代码吗?
  • 你能分享你的reducers文件吗?
  • @DenysKotsur Done.Cheers
  • @ArthurAttout 来自 redux-observable 史诗。我现在已经发布了。干杯

标签: react-native ecmascript-6 redux react-redux immutable.js


【解决方案1】:

你试图改变一个不可变的对象。当您执行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

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

注意:我修改了代码,使其可以独立运行。

【讨论】:

    猜你喜欢
    • 2018-09-27
    • 1970-01-01
    • 2020-05-23
    • 2016-01-13
    • 2019-07-28
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    相关资源
    最近更新 更多