Javascript react/flux-子组件用户事件-是否所有内容都应通过调度程序路由

Javascript react/flux-子组件用户事件-是否所有内容都应通过调度程序路由,javascript,reactjs,reactjs-flux,flux,Javascript,Reactjs,Reactjs Flux,Flux,我只是在使用通量和反应器制作一个简单的原型。以前,当我使用React时,我将事件从子组件发送到它们的父组件(在子组件上注册了prop回调),然后更改父组件中的状态 按照Flux体系结构,所有事件是否都应该通过Dispatcher引发?例如,即使是一个简单的用户事件,如选择复选框,也应通过此链引发: 在组件事件处理程序中创建操作 发送给调度员 调度器发送到存储 存储向控制器视图发出更改事件 控制器视图回调存储以获取更改 谢谢应在两种情况下发送操作: 用户输入 当必须更改子零部件的父级数据时 在

我只是在使用通量和反应器制作一个简单的原型。以前,当我使用React时,我将事件从子组件发送到它们的父组件(在子组件上注册了prop回调),然后更改父组件中的状态

按照Flux体系结构,所有事件是否都应该通过Dispatcher引发?例如,即使是一个简单的用户事件,如选择复选框,也应通过此链引发:

  • 在组件事件处理程序中创建操作
  • 发送给调度员
  • 调度器发送到存储
  • 存储向控制器视图发出更改事件
  • 控制器视图回调存储以获取更改

  • 谢谢

    应在两种情况下发送操作:

    • 用户输入
    • 当必须更改子零部件的父级数据时
    在您的情况下,根据您的应用程序为每个用户的交互分配一个操作,您应该问自己三个问题:

    • 您是否需要请求让后端知道复选框状态
    • 您是否执行任何类型的API调用
    • 其他非子组件是否需要了解它

    如果以上问题的答案中至少有一个是“是”,那么您应该发送一个操作。

    我认为这都是关于依赖性的,如果您的事件是或可能创建依赖性(即影响您的信息流量或确定未来收到的信息),那么您应该使用一个操作和一个存储

    例如:您有一个带有多个复选框的表单,我认为没有必要使用操作和存储,用户可以改变主意,选中/取消选中内容,表单发送时很重要,然后您触发一个操作


    相反,如果此复选框类似于“如果有任何新内容,请通知我”,并触发侦听器的创建,则应使用操作和存储。

    由于使用了“所有事件”等绝对值,因此很容易回答“否”。keydown之类的事件可能对商店没有直接影响。例如,一个键可能被过滤,或者如果它是enter键,则会触发一个事件。也许你想问一些更准确的问题?谢谢。您如何决定是将事件路由到存储区还是仅在子组件和父组件内部处理?@jonho是一个好的基准,数据应用程序/域状态,还是瞬态组件状态?瞬态通常最有意义的是保持组件的局部性。类似地,可重用组件应该使用本地状态,这样它们就不会绑定到任何特定的流量实现/数据。这很有意义。thanks@BinaryMuse-这回答了我的问题,如果你想添加它作为答案?