Pesquisa de site

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