Redux容器呈现要传递哪些参数的集合?
我们正在使用React+Redux,它做得很好。但有一种情况我永远不知道该用哪种策略 当我需要在集合上循环时,我可以写:Redux容器呈现要传递哪些参数的集合?,redux,Redux,我们正在使用React+Redux,它做得很好。但有一种情况我永远不知道该用哪种策略 当我需要在集合上循环时,我可以写: 传递元素 代码: 全部在一个文件中: 代码: render(){ collection.map(element=>{element.name}) } 解决方案#4不可重用,因此不太有趣 我不喜欢解决方案2,因为属性会淹没在其他属性中 我发现#3是最干净的,因为它的依赖性和转发道具较少。最大的折衷是,为每个元素项启动.find,感觉很蹩脚 所以我想这是第一个获胜的。但我觉
render(){
collection.map(element=>{element.name} )
}
- 解决方案#4不可重用,因此不太有趣
- 我不喜欢解决方案2,因为属性会淹没在其他属性中
- 我发现#3是最干净的,因为它的依赖性和转发道具较少。最大的折衷是,为每个
元素项启动
,感觉很蹩脚.find
元素
参数,为什么不传递更多?然后我们就失去了将容器与表示组件隔离的所有好处,不是吗?解决方案1和2都很好,因为在这种情况下,ElementItem
是一个表示组件,从道具接收数据
解决方案#3毫无意义,因为在集合上循环的组件已经获得状态的集合部分(或者因为此组件连接到Redux,或者因为它从props获得)
在redux文档中,有一个显示Todo集合的示例:它们使用两个表示组件:Todo
,一个Todo项,和一个显示Todo的列表。还有一个容器组件,VisibleTodoList
,它从状态计算可见todo列表,并使用TodoList
显示它们。当您想要在集合上循环时,可以使用相同的策略
另一点:如果您不想使用find
来获取正确的项目,您可以这样做,因此每个“收集表”都将项目存储在一个对象中,项目ID作为键。这样,您就可以获得如下所示的正确商品:
const element = state.collection[elementId];
您肯定需要添加一个键,以便
collection.map(element=>)
,这是最好的“redux方式”:您拥有了解redux的最顶级容器和简单的表示组件ElementItem
,可以在需要时轻松测试和替换。谢谢。你说的键是对的,我忘在这里了。获取ElementItem
,但是如果我需要传递许多参数怎么办?他们都觉得很沉重。如果我对其他参数使用Connect
,这仍然有意义吗?回答很好,谢谢。为了避免散播无用的道具,我会选择1。我也会考虑归一化。
render() {
collection.map(element => <ElementItem key={element.id} {...element} />)
}
render() {
collection.map(element => <ElementItem key={element.id} id={element.id} />)
}
connect((state, ownProps) => {
element: state.collection.find(_el => _el.id === ownProps.id)
})(ElementItem)
render() {
collection.map(element => <li key={element.id}><p>{element.name}</p></li>)
}
const element = state.collection[elementId];