我们正在推出自己的可变集合类,以在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