在flux-chat示例中,MessageSection同时侦听ThreadStore和MessageStore,因此它在ThreadStore存储更改时呈现,而在MessageStore更改时再次呈现。但是,由于其状态取决于两者,因此在状态未完成时完成第一次渲染。
除非我遗漏了一些不好的东西,否则没有?
这只是一个例子,但模式正在重复。
更新:经过长时间的讨论后,这里得出结论:
render
,React也会确保setState
仅在结束时触发一次。我的建议是每个反应组件最多使用一个商店,通过使用waitFor
与它们协调来收集所有其他商店的所有状态,然后在状态准备好时通知组件。这样就没有任何开销,也没有依赖React的内部魔力。这与具有“视图模型”类似,但没有双向绑定,数据从一个方向从存储流向组件。