javascript - método bind do ReactJS para componente de classe
Estou fazendo um curso de ReactJS na Codeacademy e eles me confundiram.
(EDITAR - código completo) Foto do código :
e não há nenhum construtor nem em nenhum lugar chamada para qualquer método bind para o método de classe scream.
No entanto, em exercícios posteriores eles dizem que você não pode fazer isso.
Eu provavelmente perdi alguma coisa.
Resposta #1
Aparentemente this.scream é uma função arrow. Função arrow não requer bind. Ela aponta para o contexto correto por padrão.
scream = () => { ... }
Resposta #2
e não há construtor nem em lugar algum chamada para qualquer método bind para o método da classe scream.
Você só precisa vincular this à instância do componente quando o método realmente usar this internamente.
Não é o caso no seu exemplo, então não há necessidade de vinculá-lo. Não importa como o método seja executado, ele sempre produzirá o mesmo resultado.
Aqui está um exemplo sem React para demonstrar a diferença:
var obj = {
value: 42,
method1() { // doesn't use `this`
console.log("yey!");
},
method2() { // uses `this`
console.log(this.value);
},
};
obj.method1(); // works
obj.method2(); // works
var m1 = obj.method1;
var m2 = obj.method2;
m1(); // works
m2(); // BROKEN!
var m2bound = obj.method2.bind(obj);
m2bound(); // works