I'm trying to update the state from the promise
which I received using the fetch
function.
componentDidMount(){ fetch(url).then((responseText) => { var response = responseText.json(); response.then(function(response){ this.setState(response); }); }); }
I was getting the error that the setState
is not an function
Then, I tried to bind(this)
to pass the this
value like below.
componentDidMount(){ fetch(url).then((responseText) => { var response = responseText.json(); response.then(function(response){ this.setState(response); }); }).bind(this); }
It is not working now also. Same error again.
This is because of the scoping of this
, so you're on to something when you're trying to use Function.prototype.bind
. Your mistake is that you don't bind all the way down to the last anonymous function. What you probably want to do is use arrow functions all the way, like this:
componentDidMount(){ fetch(url) .then((responseText) => responseText.json()) .then((response) => this.setState(response)); }
Arrow functions always keep the context of this
.
Sorry, Just now found that I didn't bind the this
variable properly.
Now, It is fixed.
componentDidMount(){ fetch(url).then((responseText) => { const response = responseText.json(); response.then(function(response){ this.setState(response); }); }.bind(this)); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With