首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RefluxJS存储可以指示调用触发器()时哪些属性发生了更改吗?

RefluxJS存储可以指示调用触发器()时哪些属性发生了更改吗?
EN

Stack Overflow用户
提问于 2015-03-14 11:04:35
回答 1查看 808关注 0票数 3

我对Flux是个新手,但我试图从反流开始来控制它,这似乎有点固执己见,而且学习起来更简单。

据我所知,反流存储有一个trigger方法,该方法指示存储的数据已经更改,并将更新的数据传递给存储。然后,可以使用Reflux.connect混合或类似方法将此数据设置为React组件的状态(或状态的属性之一)。

,但是如果一个商店有多组数据需要单独听,那该怎么办呢?,假设我正在修改TodoMVC RefluxJS实例,我希望TodoStore也包含一个title属性,该属性指示todo列表的名称(以及list,TODO项列表)。让我们假设还有一个<Title>组件正在侦听对title属性的更改,并将title设置为它的状态。

调用this.trigger(title)将更新标题组件,但也会导致todo组件尝试使用标题字符串作为其状态,因此我们需要一种方法来指示哪些数据已被更改。这两个属性(titlelist)是否应该分成不同的商店?或者所有对trigger的调用都应该包含一个字符串,该字符串指示属性:this.trigger("title", this.title)this.trigger("todos", this.list)。还是应该将所有数据组合到一个对象中,然后由侦听器来选择(例如使用Reflux.connectFilter)?

代码语言:javascript
复制
this.trigger("todos", {
    todos: this.list,
    title: this.title
});

最后两个示例向this.trigger()调用引入了新的数据,这意味着不能再使用Reflux.connect了,因为connect接收从存储区返回的数据并直接将组件状态设置到存储区。这是否意味着我们必须使用Reflux.listenTo(TodoStore,"onTodoChange"),然后筛选出与此组件无关的trigger调用?

EN

回答 1

Stack Overflow用户

发布于 2015-03-14 14:36:48

(1)它非常重要地将广播数据更改事件存储到订阅的顶层视图组件(如http://facebook.github.io/flux/docs/overview.html中所解释的所谓控制器视图)。

(2)可重用组件(如列表、标题等)是自完成的,这些组件不应该理解存储数据结构。使用属性而不是setState来显示数据。

(3)您真的希望存储不同类型的数据,还是数据属于不同的存储区。

(4)如果商店必须保存不同类型的数据,我倾向于不按操作类型进行“筛选”。为简单起见,更新所有侦听存储的视图组件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29048164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档