利用装饰器简化代码,将表单验证操作统一到一个装饰器中进行
首先装饰器的定义为修饰器(Decorator)是一个函数,用来修改类的行为。
建立一个装饰器
export default (Comp) => {
class Cp extends Comp{
constructor(props){
super(props);
this.state = {
...this.state,
errors: {
},
// error queuq
this.errorQueue = {
};
}
this.setEmailcode = this.setEmailcode.bind(this);
this.callError = this.callError.bind(this);
this.fIn = this.fIn.bind(this);
this.bOut = this.bOut.bind(this);
}
setEmailcode(v){
this._clearStateKey('emailcode', v);
if(v.target.value.length < 7){
this._changeHandler('emailcode', v);
}
}
ckemailcode(){
let rt = true;
const errors = [];
const KEY = 'gcode';
const intl = this.intl
this._isEmpty(this.state[KEY], errors, intl.formatMessage({
id: "请输入谷歌验证码"}));
//验证是否符合规则,不符合则扔到errors队列中去
this._setError(KEY, error