基本通量架构 - 重复的常量值?

Posted

技术标签:

【中文标题】基本通量架构 - 重复的常量值?【英文标题】:Basic Flux architecture - duplicate constants values? 【发布时间】:2015-11-21 07:27:21 【问题描述】:

我正在尝试了解 Flux 的工作原理,但对一件特定的事情感到困惑 - 当两个不同视图的操作常量具有相同的值时会发生什么?

为了说明我困惑的根源 - 在 Flux 架构的 Store 中,我们应该在我们的应用程序中向一个调度程序注册一个回调。 (因此,这个问题的一个假设是我们的前端应用程序应该只有一个调度程序 - 这似乎是推荐的方法)。

所以在这里,在 Store 中,我们向 Flux 调度程序注册了一个回调:

   AppDispatcher.register(function (payload) 
                var action = payload.action;
                var text;

                switch (action.actionType) 

                    // Respond to CART_ADD action
                    case FluxCartConstants.CART_ADD:
                        add(action.sku, action.update);
                        break;

                    // Respond to CART_VISIBLE action
                    case FluxCartConstants.CART_VISIBLE:
                        setCartVisible(action.cartVisible);
                        break;

                    // Respond to CART_REMOVE action
                    case FluxCartConstants.CART_REMOVE:
                        removeItem(action.sku);
                        break;

                    default:
                        return true;
                

                // If action was responded to, emit change event
                thisStore.emitChange();

                return true;

            );

这是我的 Flux 应用程序的常量:

 //FluxCartConstants.js

     var constants = 
        CHOLO:'CHOLO',
        ROLO:'ROLO',
        YOLO:'YOLO',
        CART_ADD:'CART_ADD'
     


    //OtherConstants.js

     var constants = 
       CART_FOO:'CART_FOO',
       CART_VISIBLE:'CART_VISIBLE',
       CART_ADD:'CART_ADD'  //uh-oh, this constant has the same value as FluxCartConstants.CART_ADD
     

所以我的问题是——基本的 Flux 架构应该如何处理重复的常量值?认为您可能不会意外地有重叠的常量似乎很疯狂?你是应该确保它们具有独特的价值还是我错过了一些关于通量的东西?

【问题讨论】:

【参考方案1】:

是的,所有动作常量都必须是唯一的。

我看不出这里有什么问题,在编程中有很多情况你必须确保某些键是唯一的......

同样,您的应用程序中应该只有一个调度程序。

【讨论】:

【参考方案2】:

由于操作会发送到您的所有商店,因此它们必须具有唯一值。 这里的一个常见做法是在您的操作前加上当前的“模块”名称:

FluxCartConstants.js

var FluxCartActionTypes = 
    FLUX_CART_ADD: "FLUX_CART_ADD"


var OtherModuleActionTypes = 
    OTHER_CART_ADD: "OTHER_CART_ADD"

通过将所有ActionTypes 常量放在同一个文件中,您可以一眼看出是否没有重复。在此操作的“域名”前面添加可防止重复。

【讨论】:

以上是关于基本通量架构 - 重复的常量值?的主要内容,如果未能解决你的问题,请参考以下文章

映射常量值组[重复]

为啥可选常量不会自动具有默认值 nil [重复]

C ++:在函数内声明数组时,表达式必须具有常量值[重复]

重复、常量和非常量、getter 的宏解决方案?

在常量对象中定义所有通量动作类型是一种常见的做法吗?

可以在严格模式下使用字符串值调用函数吗[重复]