如何避免React组件中的Immutable.JS函数/访问器

时间:2017-03-05 04:40:09

标签: reactjs redux react-redux immutable.js

我正在使用React for UI编写应用程序,使用Redux来管理状态,使用Immutable.js来改变状态,但是,我想知道如何避免使用Immutable.JS访问器我的React组件,例如 get() getIn()

我相信使用那个Immutable.JS访问器会感染我的React组件。如何避免?

2 个答案:

答案 0 :(得分:2)

如果你想让它保持不变,我认为你不会在这里有很多选择。您可以将其转换为toJS,但是您将失去对象标识比较的好处,以便重新渲染纯组件。你最好的选择可能是抓住你的鼻子并假装它基本上是JavaScript Map

除此之外,如果你没有附加到Immutable.js,你可能会考虑使用类似seamless immutable的东西,它的行为更像本机JavaScript数组和对象。或者你可以自己去老式,只做Object.freeze()件事。

答案 1 :(得分:0)

避免使用Immutable.JS访问器并使用点符号的方法是使用Immutable.JS中的Record结构。

首先我们必须创建一个模板:

const MyTemplate = Record({
  id: 0,
  name: ''
})

...

case ContentFilterTypes.ADD_ITEM:
    return {
        listObjects : state.listObjects.push(new MyTemplate({
            id: action.item.id,
            name: action.item.description,
        }))
    } 

要在presentional中访问它,我们只需要设置我们想要获取信息的道具,例如:

<ContentFilterAvatar id={value.id} name={value.name} />