Javascript 通量+;反应:何时将可视组件的状态保持在存储状态

Javascript 通量+;反应:何时将可视组件的状态保持在存储状态,javascript,reactjs,flux,Javascript,Reactjs,Flux,有时它并不明显:我应该在哪里保持React视图的状态,即活动选项卡、选定选项、切换值、输入验证标志 实际上有两种选择: 抛出一个操作并将该数据保存在存储中 将该数据保留为视图的状态 哪一个更好?存储是否仅用于来自服务器的数据 我的考虑: 将这些数据保存在存储中是不好的,因为这会导致一连串的行动。示例:您需要下载选项卡选择的数据-因此触发一个动作NEW\u tab\u SELECTED,并从处理该动作的存储触发一个新动作DOWLOAD\u tab\u data 将数据保留在视图中可以避免第一个操

有时它并不明显:我应该在哪里保持React视图的状态,即活动选项卡、选定选项、切换值、输入验证标志

实际上有两种选择:

  • 抛出一个操作并将该数据保存在存储中
  • 将该数据保留为视图的状态
  • 哪一个更好?存储是否仅用于来自服务器的数据


    我的考虑:

  • 将这些数据保存在存储中是不好的,因为这会导致一连串的行动。示例:您需要下载选项卡选择的数据-因此触发一个动作
    NEW\u tab\u SELECTED
    ,并从处理该动作的存储触发一个新动作
    DOWLOAD\u tab\u data
  • 将数据保留在视图中可以避免第一个操作(
    NEW\u TAB\u SELECTED
    )和避免操作链。但是如果我想离开这个视图,如何保持选中的选项卡

  • 应该保持组件状态的事物是只影响该组件的事物

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

    如果信息不是组件的一部分(如消息文本以及消息是否已被读取),则应将其保存在存储中,并根据需要在应用程序中传播

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

    因此,根据我从您的问题中收集到的信息,我建议保持活动选项卡、选定选项、切换器值以及输入是否在
    this.state
    中得到验证。它们都是组件的属性,但不影响任何其他组件。我会将填充视图的数据保存在存储中。我会在
    this.state
    中保留指示视图状态的标志

    希望有帮助