Reactを学習し、 React-routerを使用しています。私が構築しているアプリは、上部にナビゲーション メニューがあり、その下にコンテンツ セクションがあるモバイル スタイルのアプリです。アプリのページをナビゲートするときに、ページの「タイトル」をメニュー バーに追加して、現在どのページにいるかを識別したいと考えています。
私のルート:
<Routes>
<Route name='home' path='/' handler={HomePage}>
<Route name='product-list' path='products/' handler={ProductList}/>
<Route name='product-detail' path='product/:slug/' handler={ProductDetail} addHandlerKey={true}/>
</Route>
</Routes>
HomePage.render:
<div className="container">
<NavigationMenu />
<div className="contents">
{this.props.activeRouteHandler()}
</div>
</div>
NavigationMenu.render:
<div className="navigationMenu">
<div className="navigationMenuTitle>{this.props.title}</div>
</div>
私の問題
HomePage への子ルートは、Ajax 呼び出しから返されたコンテンツに基づいてタイトルを設定する必要があります。
各ルートにコールバックを追加し、タイトルを親クラスに戻して、このデータを NavigationMenu に渡すことを考えていました。残念ながら、これは機能しません。ページをナビゲートするとき、繰り返し呼び出される唯一の関数はrenderであり、ここで状態を設定するとInvariant Violation
エラーが発生します。
私の質問
- タイトルを管理するためのより良い方法はありますか?
- 毎回コールバックにデータを渡すルート レンダー関数に頼る以外に、現在のページを追跡するための代替手段はありますか(これは汚いようです)。