在Redux中存储模型,好吗?坏?

时间:2017-07-20 07:13:30

标签: javascript model redux

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

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

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

由于

2 个答案:

答案 0 :(得分:1)

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

请参阅此主题:Why redux store should be serializable?

您始终可以为计算属性编写选择器。

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

答案 1 :(得分:1)

我会反对这一点。 Redux旨在存储可序列化状态。函数不是可序列化的,更糟糕​​的是,在存储函数时,您还可以存储它们的范围并打开Pandora的框。

如果您尝试使用同一对象中的状态和方法创建经典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
}




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