2016-12-22 3 views
2

Я используюреагировать - «Редукторы не могут отправлять действия». после навигации по маршруту

hashHistory.push('/home') 

Чтобы перейти к какому-то маршруту на моем приложении. Тем не менее, всякий раз, когда я его использую, я получаю

Reducers may not dispatch actions. 

Как я могу правильно перейти к некоторому маршруту без получения этой ошибки?

+2

Есть ли у вас какие-либо сообщения в коде вашего редуктора/что он называет? Где вы называете .push? –

+0

Привет, извините за то, что я немного нооб в ответ, это для меня довольно ново. Я звоню из-за пушки изнутри редуктора. – user1326293

+2

Это ваша проблема, переместите нажатие на реактивный компонент или действие –

ответ

3

Предполагая, что вы используете Redux, вы можете использовать стуком промежуточное программное обеспечение и реагировать-маршрутизатор-перевождь

https://github.com/gaearon/redux-thunk

https://github.com/reactjs/react-router-redux

Это позволит направить действие, уменьшить его, а затем отправка другое действие после этого

import { push } from 'react-router-redux' 

const someAction = (somePayload) => (dispatch, getState) => { 
    dispatch({ 
    type: 'SOME_ACTION', 
    payload: { 
     somePayload 
    } 
    }); 

    // Get the updated state from the store and navigate 
    let { someVar } = getState(); 
    if (someVar === 'some value') { 
    dispatch(push('/home')); 
    } 
}; 


// Call like so 
store.dispatch(someAction()) 

Если вы не используете redux или не хотите идти по этому маршруту, сделайте sur e вы не отправляете действие внутри редуктора или часть этого цикла действий

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