Qual é a vantagem de usar a sintaxe de seta para um método em um constructor?
A principal vantagem de usar uma arrow function como um método dentro de um construtor é que o valor de this
é definido no momento da criação da função e não pode mudar depois disso. Então, quando o construtor é usado para criar um novo objeto, this
sempre irá referir-se ao objeto. Por exemplo, digamos que temos um construtor Person
que toma o primeiro nome como um argumento tem dois métodos para dar um console.log
nesse nome, um como uma função normal e um como uma função de seta:
O principal tirada aqui é que this
pode ser alterado para uma função normal, mas o contexto sempre permanece o mesmo para uma arrow function. Então, mesmo que você esteja passando pela arrow function para diferentes partes do seu aplicativo, você não precisaria se preocupar com a mudança de contexto.
Isso pode ser particularmente útil em componentes de classe React. Se você definir um método de classe para algo como um manipulador de cliques usando uma função normal, e, em seguida, você passa que clica manipulando em um componente filho como uma propriedade, você também precisará vincular o this
no construtor do componente pai. Se você ao invés disso usar uma arrow function, não há necessidade de vincular também "this", como o método irá automaticamente obter seu valor "this" no contexto léxico que está encapsulado. (Veja esse artigo para uma excelente demonstração e código de amostra: https://medium.com/@machnicki/handle-events-in-react-with-arrow-functions-ede88184bbb)