當兩個路由使用相同的組件時,如何在路由更改時重新裝載組件?React force在路由更改時重新裝載組件
這是我的代碼。
routes.jsx
<Router history={browserHistory}>
<Route path="/" component={Home} />
<Route path="/foo/:fooId" component={Home} />
</Router>
我在Home
成分爲fooId
一個條件檢查,其相應地呈現JSX。
<Link to="/foo/1234">fooKey</Link>
目前,上fooKey
點擊路線的變化和家庭組成的渲染功能被重新觸發,但不會被再次安裝時。
我經歷了其他的提到componentWillReceiveProps
的答案,但我在constructor
中有很多配置,我不想將所有配置都移動到componentWillReceiveProps
。
如果需要更多信息,請發表評論。
強制unmount是React中的反模式。 componentWillReceiveProps是做到這一點的正確方法,然後您的代碼將與其他讀者/貢獻者期望的內容相匹配。 –
同意,沒有好辦法做到這一點,即使有,你也不需要。如果構造函數中有配置或數據需要在實例化後可變,那麼它應該移出構造函數並進入'state'。 – jered
感謝您的建議。如果您可以指示我對組件不應該重新安裝的更多解釋,這將會很有幫助。很明顯,性能會降低,但還有其他原因嗎? –