が反応-ルータやReduxのを含め、あなたがこれを達成することができ、さまざまな方法、ありますが、あなたが反応するように新しいしているので、あなたが最初の基本に慣れる場合、それは良いでしょう。まず、メインコンポーネントの状態を変更して、どの子コンポーネントをレンダリングするかを決定する必要があります。主成分コードで
あなたが投稿スニペット、次のようにコンストラクタで状態を初期化します。そして、
/* in the main component */
constructor(props) {
super(props);
this.state = {
showAbout: true
};
}
次のようにダウンあなたのヘッダーに、あなたの主なコンポーネントへの参照を渡すために、レンダリング機能を変更しますコンポーネント:
/* in the main component */
<HeaderComponent mainComponent={this}/>
次に、HeaderComponentで、操作を実行するリンクにclickイベントハンドラをアタッチします。
/* in HeaderComponent */
showAbout() {
let mainComponent = this.props.mainComponent;
mainComponent.setState({
showAbout: true
)};
}
を最後にバック主成分のレンダリング機能では、::次のように同じコンポーネントで
/* in HeaderComponent */
<a href="#" ....... onClick={this.showAbout.bind(this)}>Show About</a>
は、showAbout関数を定義
/* in the main component */
render() {
let mainHeroComponent, aboutComponent;
if (this.state.showAbout) {
aboutComponent = (
<AboutComponent/>
);
} else {
mainHeroComponent = (
<MainHeroComponent/>
);
}
return (
<div className="index">
<HeaderComponent mainComponent={this}/>
{mainHeroComponent}
{aboutComponent}
</div>
);
}
すれば完了です!基本的に、コンポーネントは状態が変更されるたびに再レンダリングされます。したがって、リンクをクリックするたびに、メインコンポーネントの状態が新しい値で変更され、showAboutとなります。これにより、メインコンポーネントが再レンダリングされ、の値に基づいてshowAboutがMainHeroComponentまたはAboutComponentをレンダリングするかどうかが決定されます。
しかし、AboutComponentの代わりにMainHeroComponentを同様に表示して、ビューを切り替えるだけのロジックがあることを確認する必要があります。
小道具とコールバックはあなたのためのトリックを行います:) – Amit