React Component Props的解构ImmutableJS映射

我们有一个使用React + Redux + ImmutableJS的项目。我们的一位工程师最近增加了一个辅助方法来支持它传递时,一个组件作为道具解构的ImmutableJS地图:React Component Props的解构ImmutableJS映射

export function toObjectShallow(mapping: Map) { 

const result = {};

mapping.map((value, key) => {

result[key] = value;

});

return result;

}

因此,我们仍然可以做以下和避免重复调用是详细到Map.get

<XyzComponent {...toObjectShallow(this.props.xyz)}/> 

是的,这实质上是使原始对象的两个浅拷贝(我们的方法+解构)。这应该是最低的费用。我想知道,因为我没有在React/Redux/Immutable社区的其他地方看到这样的推荐,还有什么我错过了会使这种不理想的吗?

传递的属性仍然是原始的,不可改变的道具。它只是包含的对象被突变,这并不重要,因为它不会传递给组件。那么,是什么给了?这似乎是这样一个简单的解决方案,同时避免toJS()。为什么不在任何地方提及?

回答:

我认为我正在寻找的“正确”答案是继续使用Immutable JS的toObject(),它将Immutable Map对象浅转换为常规对象,从而允许我们继续使用语法糖,同时保持属性不可变而不必使用我们自己的浅拷贝。

回答:

我遵循redux文档中的建议,对所有连接的组件使用HOC,以允许我与redux之外的纯JavaScript对象进行交互。所以,我选择和减速器仍然使用ImmutableJS对象,但其余代码使用普通的JavaScript对象:

https://redux.js.org/docs/recipes/UsingImmutableJS.html#use-a-higher-order-component-to-convert-your-smart-components-immutablejs-props-to-your-dumb-components-javascript-props

编辑 - 不知道这是你在上面提toJS,我曾以为你的意思ImmutableJS .toJS。

就偏好而言,使用HOC只需要每个组件执行一次,而不是每次在方法中使用组件。

以上是 React Component Props的解构ImmutableJS映射 的全部内容, 来源链接: utcz.com/qa/266033.html

回到顶部