我对Flux是个新手,但我试图从反流开始来控制它,这似乎有点固执己见,而且学习起来更简单。
据我所知,反流存储有一个trigger方法,该方法指示存储的数据已经更改,并将更新的数据传递给存储。然后,可以使用Reflux.connect混合或类似方法将此数据设置为React组件的状态(或状态的属性之一)。
,但是如果一个商店有多组数据需要单独听,那该怎么办呢?,假设我正在修改TodoMVC RefluxJS实例,我希望TodoStore也包含一个title属性,该属性指示todo列表的名称(以及list,TODO项列表)。让我们假设还有一个<Title>组件正在侦听对title属性的更改,并将title设置为它的状态。
调用this.trigger(title)将更新标题组件,但也会导致todo组件尝试使用标题字符串作为其状态,因此我们需要一种方法来指示哪些数据已被更改。这两个属性(title和list)是否应该分成不同的商店?或者所有对trigger的调用都应该包含一个字符串,该字符串指示属性:this.trigger("title", this.title)或this.trigger("todos", this.list)。还是应该将所有数据组合到一个对象中,然后由侦听器来选择(例如使用Reflux.connectFilter)?
this.trigger("todos", {
todos: this.list,
title: this.title
});最后两个示例向this.trigger()调用引入了新的数据,这意味着不能再使用Reflux.connect了,因为connect接收从存储区返回的数据并直接将组件状态设置到存储区。这是否意味着我们必须使用Reflux.listenTo(TodoStore,"onTodoChange"),然后筛选出与此组件无关的trigger调用?
发布于 2015-03-14 14:36:48
(1)它非常重要地将广播数据更改事件存储到订阅的顶层视图组件(如http://facebook.github.io/flux/docs/overview.html中所解释的所谓控制器视图)。
(2)可重用组件(如列表、标题等)是自完成的,这些组件不应该理解存储数据结构。使用属性而不是setState来显示数据。
(3)您真的希望存储不同类型的数据,还是数据属于不同的存储区。
(4)如果商店必须保存不同类型的数据,我倾向于不按操作类型进行“筛选”。为简单起见,更新所有侦听存储的视图组件。
https://stackoverflow.com/questions/29048164
复制相似问题