2016-06-14 7 views
0

Я хотел бы использовать действие reducex как обратный вызов события в маршруте реактивного маршрутизатора. Я также использую response-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

Вы можете сделать это и в компоненте. Пример: отправьте действие в жизненном цикле компонентаDidMount() реагирующего компонента. – Hareesh

ответ

0

Вызов store.dispatch вызывает ошибку, но обертывание отправленного действия в функции работает.

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

Однако, возможно, лучший подход к этому.

Смежные вопросы