React 异步调用 AJAX

React 组件的数据可以通过 componentDidMount 方法中的 Ajax 来获取,当从服务端获取数据时可以将数据存储在 state 中,再用 this.setState 方法重新渲染 UI。

当使用异步加载数据时,在组件卸载前使用 componentWillUnmount 来取消未完成的请求。

以下实例演示了获取 Github 用户最新 gist 共享描述:

  1. class UserGist extends React.Component {
  2. constructor(props) {
  3. super(props);
  4. this.state = {username: '', lastGistUrl: ''};
  5. }
  6. componentDidMount() {
  7. this.serverRequest = $.get(this.props.source, function (result) {
  8. var lastGist = result[0];
  9. this.setState({
  10. username: lastGist.owner.login,
  11. lastGistUrl: lastGist.html_url
  12. });
  13. }.bind(this));
  14. }
  15. componentWillUnmount() {
  16. this.serverRequest.abort();
  17. }
  18. render() {
  19. return (
  20. <div>
  21. {this.state.username} 用户最新的 Gist 共享地址:
  22. <a href={this.state.lastGistUrl}>{this.state.lastGistUrl}</a>
  23. </div>
  24. );
  25. }
  26. }
  27. ReactDOM.render(
  28. <UserGist source="https://api.github.com/users/octocat/gists" />,
  29. document.getElementById('root')
  30. );

以上代码使用 jQuery 完成 Ajax 异步请求。