このようにレンダリングされた2つのReactコンポーネントがあります。複数のReactDOM.render呼び出しで共有ルータコンテキスト
ReactDOM.render(
<Router history={ browserHistory }>
<Route path='/items' component={ App }>
<IndexRoute component={ Home } />
<Route path='/items/:id' component={ Details } />
</Route>
</Router>,
document.getElementById('app')
);
サイドバーです。
ReactDOM.render(
<Sidebar />,
document.getElementById('sidebar')
);
私はサイドバーコンポーネントに反応し、ルータからリンクヘルパーを使用したいと思います。ただし、次のエラーが表示されます。「キャッチ不変の違反:ルータのコンテキスト外でレンダリングされたリンクはナビゲートできません。」これは、サイドバーが最初に見たようなルータコンテキスト内にないために意味があります。
ルータのコンテキストをサイドバーと共有する方法はありますか。
私はルートに基づいてサイドバーのレイアウトを変更し(正しくthis.props内のルータオブジェクトにアクセスします)、リンクを使用する必要があります。
history.pushStateのようなハッキーなアプローチや、location.pathを解析して、アイテムの対応するルートに従ってサイドバーのレイアウトを変更する必要はありません。
「」は別々にレンダリングされるのはなぜですか?おそらくあなたの ''コンポーネントの中にあるはずです。それは事をより簡単にするでしょう。 –
私は知っていますが、現在のプロジェクト構造では、単一のルートコンポーネントを使用してReactにサイト全体を処理させることはできません。 ''がルータのコンテキストの一部になっているので、それは本当に簡単でしょう。時間の経過とともに、サイト/アプリの多くがReactで書かれると、一般的なルート要素に近づくでしょう。残念ながら、これはまだ今日のケースではありません。 –