我正在使用React for UI编写应用程序,使用Redux来管理状态,使用Immutable.js来改变状态,但是,我想知道如何避免使用Immutable.JS访问器我的React组件,例如 get()或 getIn()。
我相信使用那个Immutable.JS访问器会感染我的React组件。如何避免?
答案 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} />