【问题标题】:Storing models in Redux, good? Bad?在 Redux 中存储模型,好吗?坏的?
【发布时间】:2017-12-25 17:49:12
【问题描述】:

我一直想知道......我有一个应用程序,它从 API 获取数据,经典。假设我们得到 API 发送的 User 对象。然后我将这些对象按原样存储在 Redux 中,因此它们是简单的对象。

现在,当我需要使用它们时,我会检索它们并且总是需要将它们传递给我的 User 模型,以便访问有用的功能,例如 getFullNamegetCompleteAddress

我的问题是,将模型存储在 Redux 中并从一开始就准备好它们不是更容易/更简单吗?或者这是一个糟糕的设计?

谢谢

【问题讨论】:

    标签: javascript model redux


    【解决方案1】:

    我建议不要这样做。 Redux 旨在存储可序列化的状态。函数不可序列化,更糟糕的是,在存储函数时,您还可以存储它们的作用域并用它打开潘多拉魔盒。

    如果您尝试创建经典的 OOP 模型(我从您的问题中猜测),它们的状态和方法在同一个对象中,您最好使用 redux 存储的对象来构建该模型。

    另一种方法是不在模型中混合状态和方法。至少我会这样处理。创建一个具有函数的模块,以创建充当对象构造函数的模型。然后将这些方法分成作用于模型给定实例的附加函数。

    所以不要这样做:

    class User {
      constructor(name, age) {
        this.name = name;
        this.age = age;
      }
      isLegal() {
        return this.age >= 18
      }
    }

    我会这样做来建模:

    export function CreateUser(name, age) {
      return {
      name: name,
      age: age
      }
    }
    
    export function IsLegal(user) {
      return user.age >= 18
    }

    但这只是我的意见,伙计!

    【讨论】:

    【解决方案2】:

    您的商店中应该只有普通的对象。这是因为模型实例方法是不可序列化的。

    看到这个帖子:Why redux store should be serializable?

    您总是可以为计算属性编写选择器。

    在此处了解如何使用选择器:https://github.com/reactjs/reselect

    【讨论】:

    • 感谢您的回答。我希望我可以选择 2 个答案。而是投票给你。
    猜你喜欢
    • 2016-09-22
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    • 2017-07-15
    • 2019-05-25
    • 1970-01-01
    相关资源
    最近更新 更多