react学习系列之ajax
React 组件的数据可以通过 componentDidMount 方法中的 Ajax 来获取,当从服务端获取数据库可以将数据存储在 state 中,再用 this.setState 方法重新渲染 UI。 方式一:通过jq或者zepto封装的ajax方法var UserGist = React.createClass({ getInitialState: function() { return { username: '',lastGistUrl: '' }; },componentDidMount: function() { $.get(this.props.source,function(result) { var lastGist = result[0]; if (this.isMounted()) { this.setState({ username: lastGist.owner.login,lastGistUrl: lastGist.html_url }); } }.bind(this)); },render: function() { return ( <div> {this.state.username}'s last gist is <a href={this.state.lastGistUrl}>here</a>. </div> ); } }); ReactDOM.render( <UserGist source="https://api.github.com/users/octocat/gists" />,document.body ); 方式二:fetch api
Fetch 规范 的API明确了用户代理获取资源的语义。它结合ServiceWorkers,尝试达到以下优化:
componentDidMount: function() { this.serverRequest = fetch(this.props.source).then((res) => { // res instanceof Response == true. if (res.ok) { res.json().then((data) => { var lastGist = data[0]; if (this.isMounted()) { this.setState({ username: lastGist.owner.login,lastGistUrl: lastGist.html_url }); } }); } else { console.log("Looks like the response wasn't perfect,got status",res.status); } },function(e) { console.log("Fetch failed!",e); }); } 目前支持程度如下: 参考资料JavaScript Fetch API (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |