我们正在推出自己的可变集合类,以在React列表组件中使用。由于要呈现的实际内容由该集合单独管理(我们通过props注入到组件中),因此我们面临两个设计疑问:


收集对象是否应保留在state中,或者应保留在props或组件的实例属性中(假设它可以处理自己的状态);
触发集合更改呈现的好习惯是什么。


我们一直在集体讨论实现此目的的最佳方法。当前,集合的变异方法返回的诺言将由集合本身来解决。如果我们将集合保存在state中,那么用(在CoffeeScript中)类似的内容对done()的诺言是一个好主意吗?

@state.collection_object.add_an_item('foo').done(
  (mutated_collection_object) => @setState(collection_object: mutated_collection_object)
)


我想了解一下您到目前为止采取/看到的这种方法。

最佳答案

在状态中保存一个收藏会很快变得混乱,用道具我觉得更糟。您是否考虑过将收藏完全保留在组件之外?我走那条路了。

您可以使用诸如Node的EventEmitter之类的东西触发更改后的综合事件,然后侦听组件内部的更改以触发重新渲染。另外,您可以将代码移出更专门处理集合本身的组件。

我找到了这个简单的示例,希望对您有所帮助。祝好运!

http://mwdesilva.com/posts/event-driven-react-js-components-via-an-event-emitter-mixin

09-11 19:04
查看更多