1
resposta

Uso da função Promise.then()

Eu queria usar em vez de uma função lambda (usando '=>') usar a declaração function do javascript.

Em vez de: fetch('https://instalura-api.herokuapp.com/api/public/fotos/rafael') .then(resposta => resposta.json()) .then(json => this.setState({fotos: json}));

Usar : fetch('https://instalura-api.herokuapp.com/api/public/fotos/rafael') .then(function(resposta) {return resposta.json()}) .then(function(json) {this.setState({fotos: json})});

mas dá erro ao executar a app.

O que estou fazendo de errado. Ou só é possível usar a função then usando declaração lambda ?

1 resposta

Opa Guilherme, acho que nessa eu posso te ajudar. Acredito que o erro seja por que ao usar a function tradicional, você perde a referência para o objeto this correto. Pra confirmar isso, preciso ver o erro.

A solução será usar a função bind sempre que você usar a função normal. Ex:

fetch('https://instalura-api.herokuapp.com/api/public/fotos/rafael') .then(function(resposta) {return resposta.json()}) .then(function(json) {this.setState({fotos: json})}.bind(this));

Toda vez que precisar usar o this dentro do function, você vai precisar fazer esse bind para deixar explicito qual é o this que está sendo referenciado dentro da função. Neste caso o this do próprio componente.