I am trying to setState of a component after a ajax callback receives data from REST api. here's my code for the component constructor
constructor(props) {
super(props);
this.state = { posts: [] };
this.getPosts = this.getPosts.bind(this);
}
Then I have a componentDidMount
method that looks like following.
componentDidMount() {
this.getPosts();
}
Now here's my getPosts function where I am doing the ajax request.
getPosts = () => {
$.ajax({
type: 'get',
url: urlname,
success: function(data) {
this.setState( { posts: data } )
}
});
}
I am tying to set the State but I am getting the following error.
this.setState is not a function
Not really sure what is causing this. It would be really helpful if someone points me to the right direction. Thanks in advance.
Bind the callback function also so that
this
inside the callback points to the context of the React Component and not the callback functionor you could use bind like
The issue is related with loosing context of this. Please try this:
or you can use bind:
You have to store the context into a variable as "this" reference will not be available in the callback. Try below solution: