Согласно рекомендациям других, я связывал методы класса в конструкторе React, например:
constructor(props) {
super(props);
this.handleChange = this.handleChange.bind(this);
}
У меня есть компоненты со многими методами, и я связываю все эти методы с this . Ах, какая боль! Чтобы избежать повторного поддержания этого шаблона, я построил функцию, которая будет вызываться в конструкторе вместо всех отдельных вызовов; он связывает все методы, специфичные для этого класса, в то время как родительский класс будет заботиться о своих собственных методах, перемещающихся вверх по классам. Например:
function bindClassMethodsToThis(classPrototype, obj) {
Object.getOwnPropertyNames(classPrototype).forEach(prop => {
if (obj[prop] instanceof Function && prop !== 'constructor') {
obj[prop] = obj[prop].bind(obj);
console.log(`${classPrototype.constructor.name} class binding ${prop} to object`);
}
});
}
class A {
constructor() {
bindClassMethodsToThis(A.prototype, this);
}
cat() {
console.log('cat method');
}
}
class B extends A {
constructor() {
super();
bindClassMethodsToThis(B.prototype, this);
}
dog() {
console.log('dog method');
}
}
let b = new B();
Итак, React и ES6, это разумный подход, или я здесь что-то не так делаю? Должен ли я придерживаться отдельных привязок к это ?