javascript - redux(?) 请求的 $$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 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',
});

不幸的是,我的应用程序开始崩溃,并显示类似消息

Error: $$typeof is not a valid enum value for [object Object].

我绝对不会要求获取$$typeof。我对 ActionTypes 枚举所做的就是将其作为我分派(dispatch)消息的一部分,然后在我的化简器的 switch 语句中使用它。

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

我的问题是:

  • $$typeof 是什么?
  • 什么可能试图访问它以及为什么?

最佳答案

虽然这不是您问题的直接答案,但请注意 your action types should always be strings ,和you should not put non-serializable values like class instances into your actions 。我强烈建议您改回使用以前的方法。

作为相关点,请考虑使用 our new official Redux Toolkit package ,其中包括用于简化几个常见 Redux 用例的实用程序,包括存储设置、定义化简器、不可变更新逻辑,甚至一次创建整个状态“切片”。特别是,如果您使用 createSlice function ,它会自动生成操作类型和操作创建者,因此您不必手动编写它们。

关于javascript - redux(?) 请求的 $$typeof 属性缺失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59958440/

相关文章:

javascript - 访问 localStorage 而不是 redux-store 的简单方法

reactjs - 从 redux-saga 中调用 redux-form 调度(change)

javascript - React 状态获取 "corrupted"

java - 带有部首字符的未封闭字 rune 字错误

javascript - react : Pass value of HTML element to event handler onClick

javascript - navigator.language 何时会与 navigator.languages[0] 不同?

javascript - 在强类型 View 中使用 JavaScript

javascript - 如何查找搜索字符串的部分是否包含在字符串中?

c++ - 使用枚举成员模板化成员函数

wpf - 如何将枚举设置为 ItemsSource WPF