• Load Initial Data via AJAX

    Load Initial Data via AJAX

    Fetch data in componentDidMount. When the response arrives, store the data in state, triggering a render to update your UI.

    When fetching data asynchronously, use componentWillUnmount to cancel any outstanding requests before the component is unmounted.

    This example fetches the desired Github user’s latest gist:

    1. var UserGist = React.createClass({
    2. getInitialState: function() {
    3. return {
    4. username: '',
    5. lastGistUrl: ''
    6. };
    7. },
    8. componentDidMount: function() {
    9. this.serverRequest = $.get(this.props.source, function (result) {
    10. var lastGist = result[0];
    11. this.setState({
    12. username: lastGist.owner.login,
    13. lastGistUrl: lastGist.html_url
    14. });
    15. }.bind(this));
    16. },
    17. componentWillUnmount: function() {
    18. this.serverRequest.abort();
    19. },
    20. render: function() {
    21. return (
    22. <div>
    23. {this.state.username}'s last gist is
    24. <a href={this.state.lastGistUrl}>here</a>.
    25. </div>
    26. );
    27. }
    28. });
    29. ReactDOM.render(
    30. <UserGist source="https://api.github.com/users/octocat/gists" />,
    31. mountNode
    32. );