【问题标题】:Redux-saga store converts custom class to plain objectRedux-saga store 将自定义类转换为普通对象
【发布时间】:2020-05-20 15:17:55
【问题描述】:

我正在尝试使用我的减速器将自定义调用 User 存储到商店。问题是,reducer 通过将类的属性替换为普通对象的属性,将自定义类转换为普通对象。这意味着当我从商店获取该类时,无法调用任何类方法。

我的 User 类有一个方法 getGroup 在从商店中检索用户后无法调用。

所以一个例子是:

class User {
   constructor(data){
       this.data = data;
       this.id = data.id;
   }

   getGroup() {
       return this.data.group;
   }
}

将转换为:

{
    data: {
        id: 1, 
        group: "Some group"
    },
    id: 1
}

我正在使用 react-redux 库中的 connect 将商店状态映射到 React 道具。

知道我该怎么做:

  • 当 redux saga 从其 store 中获取属性时转换为正确的 User 类(如修改 getter)
  • 允许reducer存储我的User

【问题讨论】:

  • 你确定你的减速机能做到吗?你怎么知道普通对象存储在商店而不是类实例中?

标签: reactjs redux react-redux redux-saga


【解决方案1】:

You shouldn't ever put non-serializable values in the Redux store in the first place:

避免将不可序列化的值(例如 Promises、Symbols、Maps/Sets、函数或类实例)放入 Redux 存储状态或调度的操作。这确保了通过 Redux DevTools 进行调试等功能将按预期工作。它还确保 UI 将按预期更新。

【讨论】:

  • 我很久以前就看到了,但再也找不到了。我想我需要依靠react-redux 来转换状态数据。
猜你喜欢
  • 1970-01-01
  • 2018-02-24
  • 2021-11-01
  • 2014-01-09
  • 2017-06-06
  • 2023-03-14
  • 2016-09-14
  • 2012-08-02
相关资源
最近更新 更多