Using this.setState in a callback

有些话、适合烂在心里 提交于 2019-11-28 14:05:19

You can set this with .bind method like this, and call twitter.get in componentDidMount as in this example

componentDidMount: function() {
   twitter.get('statuses/user_timeline', function(error, data) {
      this.setState({tweets: data})
   }.bind(this)); // set this that refers to you React component
}

Example

Never perform ajax call in componentWillMount.

Do it in componentDidMount.

Also there is a scope problem, for that use what Alexander suggest (bind). Another possibility is:

componentDidMount: function() {
    var self = this;
    twitter.get('statuses/user_timeline', function(error, data) {
        self.setState({tweets: data})
    });
}

Also more details here http://facebook.github.io/react/tips/initial-ajax.html (already underlined by klimo in comments)

There are 2 ways by putting it inside componentDidMount, you can solve the issue :

1. Bind this scope to the function

.bind(this)

twitter.get('statuses/user_timeline', function(error, data) {
   this.setState({tweets: data})
}).bind(this);

2. Use fat arrow

=>

twitter.get('statuses/user_timeline', (error, data) => {
   this.setState({tweets: data})
});
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!