eh0*_*908 11 javascript state reactjs redux
在状态中存储类是否被认为是不好的做法?我读过状态应该是容易序列化的对象和类打破了这个约定。
我正在创建一个 Web 应用程序,它使用 React/Redux 和一组支持模型来收集用户的信息。
例如,我有以下模型:
class Person {
  constructor(params = {}) {
    this.firstName = params.firstName || '';
    this.lastName = params.lastName || '';
    this.gender = params.gender || '';
    this.dateOfBirth = params.dateOfBirth || '';
    this.stateOfResidence = params.stateOfResidence || '';
    this.email = params.email || '';
  }
  validateField(args) {
    // remove for brevity
  }
  valid(args) {
    // remove for brevity    
  }
}
通过发出以下 actionCreator 将对象添加到存储中:
export function addPerson(args = {}) {
  return (dispatch) => {
    dispatch({
      type: 'ADD_PERSON',
      obj: new Person(args)
    });
  };
}
合适的人减速器将其粘贴到状态中,以便我可以从应用程序的其余部分中获取它。
这样,当我从状态中获取对象时,我可以运行它的验证和有效原型函数,以查看模型是否有效并做出适当的反应。
这是否打破了 React/Redux 约定?解决这个问题的另一种方法是什么?使用上述方法可能会遇到哪些潜在问题?现在无法预见任何问题......但我也没有太多的 React/Redux 经验(约 4 个月)
编辑:
我应该补充一点,我只通过减速器改变对象状态。我很小心不要在应用程序的其他地方改变状态。
是的,它通常被认为是一种反模式,因为它破坏了诸如时间旅行调试(Redux 的核心卖点之一)之类的功能。有关更多详细信息,请参阅Redux 常见问题解答。
如果您确实希望在纯数据上拥有更多类似对象的外观,您可能需要研究类似redux-orm的东西。
| 归档时间: | 
 | 
| 查看次数: | 5179 次 | 
| 最近记录: |