加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

reactjs – React / Flux – 为什么我需要一个动作调度程序?

发布时间:2020-12-15 20:42:07 所属栏目:百科 来源:网络整理
导读:我知道我需要一个emit.change()调度程序,让所有组件都知道商店内部发生了变化.但我不明白为什么我需要调度操作而不是直接从操作中调用存储, .i.e.我为什么要这样做: var Dispatcher = require('dispatcher');var MyActions = { addItem: function(item){ Di
我知道我需要一个emit.change()调度程序,让所有组件都知道商店内部发生了变化.但我不明白为什么我需要调度操作而不是直接从操作中调用存储,

.i.e.我为什么要这样做:

var Dispatcher = require('dispatcher');
var MyActions = {
    addItem: function(item){
        Dispatcher.dispatch({
              action: 'ADD_ITEM',payload: item       
       })
    }
}

而不是这个:

var MyStore = require('mystore');
var MyActions = {
    addItem: function(item){
        MyStore.addItem(item);
    }
}

对于多个商店监听同一事件的情况,例如StoreA和StoreB是否也听ADD_ITEM?

当调用它们时,调度程序逐个触发动作.你需要一个调度员,因为:

>您希望以原子方式更改应用程序状态.这意味着,s1-> s2(a1),s2-> s3(a2)以同步方式.而不是s1-> s3(因为a1和a2).如果您不这样做,您将不得不担心与此特定操作一起触发的其他操作,并猜测应用程序状态将如何针对所有这些组合进行更改.这是所有地狱破裂的地方,你的代码将变得难以维护.想象一下,为每个触发的动作在商店中编写一个if-else块,以检查其他动作是否也处于活动状态.调度员确保在调度时不调度.一次发一次.保持你的州树非常健康.>此外,调度员还会为每个“操作”维护一系列回调.这对于在同一操作的多个商店上调用回调非常有用.当商店订阅某个操作(使用寄存器)时,调度程序会添加与其关联的registerHandler并将其添加到数组中.借助此功能,您可以在需要时注册/取消注册商店.根据操作类型,您可以根据注册的所有商店进行相应的更改.如果您不使用调度程序,则在编写操作部分时,您将不得不担心必须通知的所有商店.坏!>通过这种方法,您必须关注的唯一事情就是向调度员发起一个动作.其余部分由调度员决定,该调度员根据操作通知需要更改的所有商店.由于商店具有触发视图的回调,因此可以在需要时调用这些回调.这使您的代码非常模块化.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读