【发布时间】:2015-08-15 11:50:32
【问题描述】:
问题
当我加载一个 React 组件时,如何将一个对象添加到存储中,然后使用 Flux 模式立即将其加载到组件的状态中?
背景
我有一个 Flux 存储 (TableStore),它管理名为 Tables 的对象,以及名为 TableList 和 TableEditor 的 React 组件。
TableList 组件列出了 store 中的表,每个 item 都有一个编辑按钮导航到 /tables/editor/:tableId,它加载了TableEditor 组件,TableEditor 通过 tableId 从 store 中获取表在网址中。
TableList 还有一个“创建新表”按钮。导航到/tables/editor/new。当这个 URL 被加载后,我需要在 store 中添加一个新的Table,然后将其加载到TableEditor 的状态中。
使用 Flux 模式,组件不应该直接调用这样的函数;他们应该调用Actions,它将动作发送到商店。不幸的是,如果在组件的getInitialState() 中调用了某个操作,则在组件中执行componentWillMount() 之前 执行商店中的函数,并且该组件错过了来自商店的change 事件,所以我的TableEditor 组件不会从TableStore 加载表。
我认为这是一个非常普遍的需求,所以必须有一个标准的方法来解决这个问题(我希望)。
有什么想法吗?
【问题讨论】: