Javascript RefluxJS存储在调用trigger()时是否可以指示哪个属性已更改?
作为一个整体,我对流量还不太熟悉,但我正试图从回流开始控制它,回流似乎更固执己见,更容易学习 据我所知,回流存储有一个Javascript RefluxJS存储在调用trigger()时是否可以指示哪个属性已更改?,javascript,reactjs,reactjs-flux,flux,refluxjs,Javascript,Reactjs,Reactjs Flux,Flux,Refluxjs,作为一个整体,我对流量还不太熟悉,但我正试图从回流开始控制它,回流似乎更固执己见,更容易学习 据我所知,回流存储有一个触发器方法,指示存储的数据已更改,并将更新的数据传递给它。然后可以使用mixin或类似方法将该数据设置为React组件的状态(或状态的属性之一) 但是如果一个存储区有多组需要单独监听的数据怎么办?假设我正在修改TodoMVC,并且我希望TodoStore还包括一个title属性,该属性指示todo列表的名称(以及列表,todo项目列表)。假设还有一个组件正在侦听title属性的更
触发器
方法,指示存储的数据已更改,并将更新的数据传递给它。然后可以使用mixin或类似方法将该数据设置为React组件的状态(或状态的属性之一)
但是如果一个存储区有多组需要单独监听的数据怎么办?假设我正在修改TodoMVC,并且我希望TodoStore还包括一个title
属性,该属性指示todo列表的名称(以及列表
,todo项目列表)。假设还有一个
组件正在侦听title
属性的更改,并将title
设置为更改时的状态
调用this.trigger(title)将更新title组件,但也会导致todo组件尝试使用title字符串作为其状态,因此我们需要一种方法来指示哪些数据已更改。这两个属性(标题
和列表
)是否应分为不同的存储区?或者对trigger
的所有调用是否都应该包含一个表示属性的字符串:this.trigger(“title”,this.title)
或this.trigger(“todos”,this.list)
。还是应该将所有数据合并到一个对象中,然后由侦听器拾取(例如,使用reflow.connectFilter
)
最后两个示例为this.trigger()
调用引入了新数据,这意味着Reflux.connect
不能再使用了,因为connect
获取从存储返回的数据,并直接将组件状态设置为它。这是否意味着我们必须使用reflow.listenTo(TodoStore,“onTodoChange”)
,然后过滤掉与此组件无关的触发器调用?(1)其非常重要的功能是将广播数据更改事件存储到订阅的顶级视图组件(所谓的控制器视图,如中所述)
(2) 可重用组件(如列表、标题等)是自完整的,这些组件不应理解存储数据结构。对显示数据使用属性而不是设置状态
(3) 您真的希望存储区保存不同类型的数据,还是数据属于不同的存储区
(4) 如果存储必须保存不同类型的数据,我不希望按操作类型进行“筛选”。为了简单起见,更新所有正在侦听存储的视图组件。更新它们都很好,但我的问题是如何使用回流来实现这一点。我是否使用(如我的第二个示例)选择相关的状态数据是的,可以使用reflow.connectFilter,或者可以在应用商店中实现自定义getter/filter。
this.trigger("todos", {
todos: this.list,
title: this.title
});