【发布时间】:2016-12-17 18:51:09
【问题描述】:
来自 angular 我曾经为我的数据库中的每个实体都有一个类,这样的类封装了所有实体行为。
例如用户类可能看起来像
export class User{
static notValid(u){
return !!((u.id && u.id > 0 && u.fullname && u.fullname.length > 2 && u.picture) === false);
}
static fromArray(arr){
let pack = [];
for(let i=0;i<arr.length;i++){
pack.push(new User(arr[i]));
}
return pack;
}
constructor(u){
this.id = u.id || 0;
this.fullname = u.fullname+'' || 'N/A';
this.picture = u.picture+'' || '/imgs/logo.png';
this.role = u.role || 'N/A';
this.username = u.username+'' || '';
this.email = u.email+'' || '';
this.dob = u.dob || 0;
this.gender = u.gender+'' || '';
///START SETTING FLAGS AND VALIDATING DATA;
this.isValid = !User.notValid(this);
this.saved = this.id > 0;
let n = this.fullname;
this.nickname = n.split(' ').shift()+' '+n.split(' ').pop();
}
save(){
///IF NO ID, POST TO SERVER
if(!this.saved)return $http.post('/user',this.toJson);
return $http.put('user/'+this.id,this.toJson());
//tojson is defined in prototype;
}
identity(){
return {id:this.id,fullname:this.fullname,picture:this.picture,nickname:this.nickname};
}
}
}
所以我的控制器不知道如何保存或更新用户,它所要做的就是在用户对象上触发 save()。
现在是 React 世界,应用程序内部的所有东西都是一个组件;
1.我如何在反应组件中复制这种方法?
我读了很多关于展示组件和智能组件的文章。但是数据模型组件呢?
2。如果我移植我所有当前类的反应我是否也应该实现渲染方法?我可以有多个渲染函数来根据页面返回不同的 html。
上面的示例用户可以出现在个人资料中将所有详细信息,并作为用户列表中的卡片,所以我应该在类原型中保留 html 吗?
【问题讨论】:
-
您可以使用npmjs.com/package/redux-schema 来执行此操作(披露:我写的)。
标签: angularjs oop reactjs redux data-modeling