0
我有一個使用react-router
v2.4的React應用程序。我有像這樣限定的路徑:反應路由器查詢參數
<Router history={this.props.history}>
<Route path="/:organisationId/objects"
component={ObjectsPage}
onEnter={(state) => {
this.props.dispatch(objectsFetch(
state.params.organisationId,
state.location.query
));
}}
/>
</Router>
本質上,這條路線調度一個動作來從API其然後以表格形式呈現取某些對象。我希望這個表是可搜索,可排序和分頁的,我認爲將表中的狀態作爲查詢參數存儲在URL中是合適的,因此可以刷新它,並且不會中斷瀏覽器的後退/前進功能。
爲了更新我的表組件我做一個URI來browserHistory
調用與此類似(注意查詢參數):
browserHistory.push('/0f08ac61-ddbd-4c73-a044-e71b8dd11edc/objects?page=2&search=query&sort=firstname|desc');
不過,這並不會觸發react-router
以爲其路由更新爲onEnter
即使使用新查詢字符串更新瀏覽器歷史記錄,回調也永遠不會被觸發。我想我明白爲什麼會這樣;由於查詢字符串不是定義路線的一部分,我猜這個包不會選擇變化。
有沒有辦法使用react-router
與這樣的查詢參數,或者我必須使我的過濾器的一部分的URI?
是看起來的onChange只被調用,如果查詢參數是改變了,而不是如果路由參數改變了。這是否正確,如果是這樣,爲什麼? – claireablani