基本 Flux 架构 - 重复常量值?

Basic Flux architecture - duplicate constants values?

我正在尝试了解 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 架构应该如何处理重复的常量值?认为您可能不会意外地拥有重叠常量似乎很疯狂?您是否应该确保它们具有唯一值,还是我遗漏了有关通量的某些信息?

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

FluxCartConstants.js

var FluxCartActionTypes = {
    FLUX_CART_ADD: "FLUX_CART_ADD"
}

var OtherModuleActionTypes = {
    OTHER_CART_ADD: "OTHER_CART_ADD"
}

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

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

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

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