我一直想知道...我有一个应用程序,从API获取数据,经典。假设我们获得API发送的User
个对象。然后我将这些对象按原样存储在Redux中,因此它们是简单的对象。
现在,当我需要使用它们时,我会检索它们,并且总是需要将它们传递给我的User
模型,以便访问有用的功能,例如说getFullName
或getCompleteAddress
。
我的问题是,将模型存储在Redux中是不是更容易/更简单,从一开始就准备好了?或者这是一个糟糕的设计?
由于
答案 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
}

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