//demo13 var Input = React.createClass({ getInitialState: function(){ return {loading: true, error: null, data: null,value: 'javascript'}; }, componentDidMount: function(){ var val = this.state.value; var url = 'https://api.github.com/search/repositories?q='+ val +'&sort=stars'; $.get(url, function(result){ if(this.isMounted()){ this.setState( {loading: false, data: result, error: null, value: val} ); } }.bind(this)); }, handleClick: function(){ var val = this.state.value; var url = 'https://api.github.com/search/repositories?q='+ val +'&sort=stars'; try { $.get(url, function(result,status){ this.setState( {loading: false, data: result, error: null} ); }.bind(this)); }catch(err){ this.setState( {loading: false, data: null, error: err} ); } }, handleChange: function(event){ var val = event.target.value; this.setState({value: val}); }, render: function(){ var val = this.state.value; if(this.state.loading){ return <span>Loading...</span>; }else if(this.state.error !== null){ return <span>Error: {this.state.error.message}</span>; }else{ var repos = this.state.data.items; var repoList = repos.map(function(repo, index){ return ( <li key={index}> <a href={repo.html_url}>{repo.name}</a> ({repo.stargazers_count} stars)<br/> {repo.description} </li> ); }); return ( <main> <div> this is React.createClass <hr/> 01\getInitialState 初始化状态 <hr/> 02\compcomponentDidMount 加载完成 <hr/> 03\handleClick 点击 <hr/> 04\handleChange 改变 <hr/> 05\render 渲染 <hr/> <input type="text" value={val} onChange={this.handleChange} /> <p onClick={this.handleClick}>you selach {val} this. Click to toggle.</p> </div> <h1>Most popular {val} projects in github</h1> <ol>{repoList}</ol> </main> ); } } }); ReactDOM.render( <Input />, document.getElementById('example') );//效果 input 输入动态展示要搜索的值,然后点击文本,搜索结果在下面展示30条