2016-06-14 51 views
0

我想在rea-router路由中使用redux操作作爲對onChange事件的回調。我也在使用react-router-redux。作爲迴應路由器路由組件中的回調操作

喜歡的東西

<Route path="profile/search" component={ProfileSearch} onChange={store.dispatch(fetchCompanies())} /> 

其中fetchCompanies是行動。

更一般地說,我希望聽到路由變化並最終與狀態交互,這就是爲什麼使用動作對我來說似乎是最直接的選擇。然而,我得到這個錯誤:

Uncaught TypeError: hook.apply is not a function TransitionUtils.js?f913:22 

是否有另一種方法來實現這一目標?是否試圖將一個行動作爲回調傳遞給路由改變固有的不好?如果不是,我該如何讓它工作?

+0

爲什麼你想在路由器級別上做到這一點? – Hareesh

+0

只需使用'Route'組件和'onChange'來觸發api請求作爲回調(每當特定路由發生變化時,就是這樣)。 api請求將返回一些我必須保存在全局狀態中的數據。 – feychou

+0

你也可以在組件中做到這一點。例如:在反應組件的componentDidMount()生命週期中分派動作。 – Hareesh

回答

0

調用store.dispatch會拋出錯誤,但將調度的操作封裝在函數中。

const onChangeProfileSearch =() => store.dispatch(fetchCompanies()); 
<Route path="profile/search" component={ProfileSearch} onChange={onChangeProfileSearch} /> 

但是,對此可能有更好的方法。