私はナビゲーションにreact-router-reduxを使用しており、connect()
コンポーネントをネストしています。これは、反応ルータのルートが変更されたときに、ネストされたコンポーネントが再レンダリングされない点を除いて、正常に動作しているようです。react-routerは経路変更時にredux connect()のコンポーネントを再レンダリングしません
具体的には、以下の構造において、App
およびSidebar
はconnect()
であり、両方ともstate
の情報が必要です。私はSidebar
でLink
をクリックすると:
@@router/LOCATION_CHANGE
アクションが- 、発射された私は反応し-ルータ再来しているの状態を更新しているので、私の状態に結合されている
routerReducer
、 - のApp再レンダリングし、
- が表示されますが、サイドバーは再表示されないため、「アクティブ」
Link
は更新されません。activeClass
は変更されません。
ここで間違っていますか?
ルータ
<Router component={App}>
<Route path="foo" component={Foo}/>
<Route path="bar" component={Bar}/>
<Route path="baz" component={Baz}/>
</Router>
のApp
<div>
<Sidebar/>
<div>
{children}
</div>
</div>
サイドバー
<nav>
<Link to="/foo" activeClass="active">Foo</Link>
<Link to="/bar" activeClass="active">Bar</Link>
<Link to="/baz" activeClass="active">Baz</Link>
</nav>
現在の時刻を任意にサイドバーに渡すことでこの問題を回避しています( ' ')。それが毎回異なるという事実は、再レンダリングを強制するようですが、実際にそれを修正するものではありません。 –
nicholas