Javascript redux(?)及其'请求的$$typeof属性;她失踪了

Javascript redux(?)及其'请求的$$typeof属性;她失踪了,javascript,redux,enums,typeof,Javascript,Redux,Enums,Typeof,我正在重构我的redux代码,我决定用一个枚举替换作为我的操作类型的字符串。我创建了这样一个类: class Enum { constructor(enumObj) { const handler = { get: function(obj, prop) { if (prop in obj) { return obj[prop]; } throw new Error(`${prop} is not a

我正在重构我的redux代码,我决定用一个枚举替换作为我的操作类型的字符串。我创建了这样一个类:

class Enum {
  constructor(enumObj) {

    const handler = {
      get: function(obj, prop) {
        if (prop in obj) {
          return obj[prop];
        }
        throw new Error(`${prop} is not a valid enum value for ${enumObj}`);
      }
    }
    return new Proxy(Object.freeze(enumObj), handler)
  }
}

export const ActionTypes = new Enum({
  SOME_ACTION: 'SOME_ACTION',
  ANOTHER_ACTION: 'ANOTHER_ACTION',
});
不幸的是,我的应用程序已开始崩溃,出现如下消息

错误:$$typeof不是[object]的有效枚举值

我绝对不是要求获得
$$typeof
。我对
ActionTypes
enum所做的只是将其作为已调度消息的一部分,然后在我的reducer中的switch语句中使用它

我注意到,如果我通过向处理程序的
get
添加一个返回
string
undefined
if
prop='$$typeof'
的代码来处理这种情况,我的应用程序就可以正常工作。我可以把它放在那里,但我想知道发生了什么

我的问题是:

  • 什么是
    $$typeof
  • 什么可能试图访问它,为什么

    • 虽然这不是对您问题的直接回答,但请注意,以及。我强烈建议您重新使用前面的方法


      作为一个相关点,请研究使用,其中包括简化几个常见Redux用例的实用程序,包括存储设置、定义缩减器、不可变更新逻辑,甚至一次创建整个状态“切片”。特别是,如果您使用,它会自动生成动作类型和动作创建者,这样您就不必手动编写它们。

      如果我理解正确,可以使用
      ActionTypes。在
      dispatch
      中的一些动作
      我实际上使用的是一个以奇特方式获取的字符串。我不会传递枚举实例。