Reactいくつかのルートを宣言するアプリケーションがあります:
<Switch>
<Route exact path={'/'} render={this.renderRootRoute} />
<Route exact path={'/lostpassword'} component={LostPassword} />
<AuthenticatedRoute exact path={'/profile'} component={Profile} session={session} redirect={'/'} />
<AuthenticatedRoute path={'/dashboard'} component={Dashboard} session={session} redirect={'/'} />
<AuthenticatedRoute path={'/meeting/:meetingId'} component={MeetingContainer} session={session} redirect={'/'} />
<Route component={NotFound} />
</Switch>
(AuthenticatedRoute
は、セッションをチェックし、<Route component={component} />
または<Redirect to={to} />
を呼び出すが、最後にcomponent
メソッドが呼び出される)ダムコンポーネントです)
ルート変更時に基本的に各コンポーネントがマウント/アンマウントされる場所。多くのことを行うDashboard
ルートのアスペクトexceptを維持したいと思います。ダッシュボードではなく一度アンマウントします(会議ページに到着したため、まだダッシュボードをマウントする必要はないとします)が、一度ダッシュボードをロードすると、プロファイルページ、会議などに戻ったときに、戻ってきます。ダッシュボードでは、コンポーネントを再度マウントする必要はありません。
render または子がコンポーネントの代わりに解決策である可能性があることをReact-routerのドキュメントで読みましたが、ルートを子と混合し、その他をコンポーネントと混合できますか?私は多くのことを試みましたが、render
またはchildren
を使用していても、ダッシュボードコンポーネントがまだマウント/アンマウントしています。
ご協力いただきありがとうございます
Switch
コンポーネントは、単一のルートのみをレンダリングします。最も早い一致が優先されます。 Dashboard
コンポーネントはその中にあるため、別のルートが一致するたびにアンマウントされます。これをRoute
を外側に移動すると、render
またはchildren
で意図したとおりに機能します。