Flux + React:何时保持可视组件的状态

时间:2015-11-23 08:16:53

标签: javascript reactjs flux

有时它并不明显:我应该保持React视图的状态,即活动标签,选择的选项,切换器值,是输入验证标志吗?

实际上有两种选择:

  1. 执行操作并将该数据保存在商店
  2. 将该数据保留为查看状态
  3. 哪个更好?商店是否仅用于来自服务器的数据?

    我的考虑因素:

    1. 将数据保存在商店中是不好的,因为这会导致一系列操作。示例:您需要下载选项卡选择的数据 - 因此您触发操作NEW_TAB_SELECTED,并从处理它的商店触发新操作DOWLOAD_TAB_DATA
    2. 在视图中保留数据可以避免第一个操作(NEW_TAB_SELECTED)并避免操作链。但是,如果我想离开这个视图,如何保留选定的标签?

1 个答案:

答案 0 :(得分:4)

应该保留在组件状态中的东西是仅影响该组件的东西

因此,例如,如果您打开一个组件以显示更多内容,那么isOpen标志可以保持在状态,因为它在组件内部。

如果信息不是组件的一部分(例如消息的文本以及消息是否已被阅读),则应将其保存在商店中并根据需要通过应用程序进行传播。

更改组件的状态将导致它重绘,因此请尝试将状态保持为其状态的最小可能表示,并仅将这些属性存储在this.state中。

因此,根据我的问题,我建议保留活动标签,选定选项,切换值以及输入是否在this.state中验证。它们是组件的所有属性,但不影响任何其他组件。我会保留在商店中填充视图的数据。我会在this.state中保留指示视图状态的标志。

希望有所帮助。