gpt4 book ai didi

javascript - RefluxJS 存储在调用 trigger() 时能否指示哪个属性已更改?

转载 作者:行者123 更新时间:2023-11-29 14:48:53 26 4
gpt4 key购买 nike

作为一个整体,我对 Flux 还是个新手,但我正试图通过从 Reflux 入手来掌握它,Reflux 似乎更固执己见,也更容易学习。

据我所知,Reflux 商店有一个 trigger指示商店数据已更改的方法,他们将更新后的数据传递给它。然后可以使用 Reflux.connect 将此数据设置为 React 组件的状态(或状态的属性之一)。 mixin 或类似的方法。

但是,如果商店有多组数据需要单独收听怎么办?假设我正在修改 TodoMVC RefluxJS example ,我希望 TodoStore 也包含一个 title指示待办事项列表名称的属性(以及 list ,待办事项列表)。假设还有一个 <Title>监听 title 变化的组件属性,并设置 title作为它的状态。

调用 this.trigger(title)会更新标题组件,但也会导致待办事项组件尝试使用标题字符串作为其状态,因此我们需要一种方法来指示哪些数据已更改。这两个属性( titlelist )是否应该分成不同的商店?或者应该所有调用 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与该组件无关的调用?

最佳答案

(1) 它非常重要的存储将数据更改事件广播到订阅的顶级 View 组件。(所谓的 Controller View ,如 http://facebook.github.io/flux/docs/overview.html 中所述)。

(2) 可复用的组件,如List、Title等。是 self 完成的,这些组件不应该理解存储数据结构。使用属性而不是 setState 来显示数据。

(3) 你真的希望商店保存不同类型的数据,还是数据属于不同的商店。

(4) 如果商店必须保存不同类型的数据,我的偏好是不要按操作类型“过滤”。为简单起见,更新所有监听商店的 View 组件。

关于javascript - RefluxJS 存储在调用 trigger() 时能否指示哪个属性已更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29048164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com