1
http://codepen.io/anon/pen/KNEzOX?editors=0010コールreact.js
にレンダリングするための別のコンポーネントは、私が取得し、リストをレンダリングしない成分Aを持っています。私はユーザー入力を受け入れるコンポーネントBを持っています。コンポーネントBからコンポーネントAを起動するにはどうすればよいですか?私の構造は間違っていると思う。
const Profiles = React.createClass({
getInitialState(){
return {profiles: []}
if(!this.props.username){
return false;
}
fetch('https://api.github.com/search/users?q=' + this.props.username)
.then(function(response) {
return response.json()
}).then(function(json) {
this.setState({profile: json.items})
})
},
render(){
return (
<ul>
{
this.state.profiles.map(profile =>
<li key={profile.id}>profile.name</li>
)
}
</ul>
)
}
})
const Input = React.createClass({
getInitialState(){
return {username:''}
},
handleInputChange(e){
this.setState({username:e.target.value})
},
handleSearch(){
if(!this.state.username){
alert('username cannot be empty');
return false;
}
//call profile component and pass username to it?
},
render() {
return(
<div>
<input type="text" placeholder="github username" onChange={this.handleInputChange} value={this.state.username} />
<button onClick={this.handleSearch}>Search</button>
<Profiles username={this.state.username} />
</div>
)
}
});
私はあなたの最初の点を得て、それを修正しました。しかし、私はあなたの第二のものを理解していません。プロファイルコンポーネントを入力コンポーネントから呼び出す方法がわかりません。 –
説明するコードをいくつか追加しました。 – Scimonster
私の構造は間違っていると思います。私はコンポーネントAでフェッチを行うべきではなく、単にクリックハンドラ内でフェッチし、その結果をレンダリングするコンポーネントBにpropとして渡します。 –