多个> 4(约10个)函数,在构造函数中将其绑定。 有没有办法缩短代码?
constructor(props: SignupProps) {
super(props);
this._setDirty = this._setDirty.bind(this);
this._handleUserInput = this._handleUserInput.bind(this);
this._A = this._A.bind(this);
this._B = this._B.bind(this);
}
我尝试了以下操作,但是不能。
[this._setDirty, _this.handleUserInput, this._A, this._B].bind(this);
答案 0 :(得分:1)
您需要对方法进行循环,并在每次迭代中调用.bind
,以使方法可行。例如:
const methods = ['_setDirty', '_a', '_b', ...];
methods.forEach(method => this[method] = this[method].bind(this));
答案 1 :(得分:1)
方法应该分配一个循环(另一个答案已经提到):
for (const prop of ['_setDirty', /* ... */])
this[prop] = this[prop].bind(this);
使用箭头代替原型方法可以跳过bind
,但这是bound prototype methods are generally preferable的唯一好处,因为它们具有灵活性。
由于使用了React,因此可以安全地假定还使用了Transpiler,因此该项目不仅限于ES6。
装饰器可以方便地在ES中使用.Next代码绑定方法,例如bind-decorator
:
import bind from 'bind-decorator';
...
constructor(props: SignupProps) {
super(props);
}
@bind
_setDirty() {...}
...