2017-02-16 10 views
2

Я пытаюсь добавить push метод от redux-router в действиях. Когда я инициирую действие, нажимаем на прием объекта в полезной нагрузке, но не изменяйте страницу. enter image description hereКак добавить метод push от redux-router к действиям

действия/index.js

import { push } from 'redux-router'; 
 

 
export const actions = {}; 
 

 
actions.goTo =() => { 
 
    return (dispatch) => { 
 
     dispatch(push('/staff')); 
 
    }; 
 
};

Но если я инициализировать push не от действия, но прямо в компоненте он работает правильно.

MyComponent/index.js

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

 
@connect((state) => ({})) 
 
export default class MyComponent extends Component { 
 

 
constructor (props) { 
 
     super(props); 
 
     this._goTo = ::this._goTo; 
 
    } 
 
    
 
_goTo (event) { 
 
     event.preventDefault(); 
 
     const { dispatch } = this.props; 
 
     dispatch(push('/staff')); 
 
    } 
 
    
 
    render() { 
 
     return (
 
      <section> 
 
       <button onClick = { this._goTo }>from component</button> 
 
      </section> 
 
     ); 
 
    } 
 
}

ответ

0

Возможно, ошибка, когда вы составляете своих посредников.

Примечание: После промежуточного программного обеспечения Logger должно выполняться промежуточное программное обеспечение маршрутизатора.

Как это:

compose(
    applyMiddleware(...middleware), 
    reduxReactRouter({ createHistory }) 
); 
0

Так, push() может работать только изнутри подключенного компонента. Если вы хотите использовать его из своего файла actions/index.js, вы можете передать его в качестве параметра и вызвать его там, без необходимости его импортировать. Вы можете иметь что-то вроде:

export const actions = {}; 

actions.goTo = (route, push) => { 
    return() => { 
     push(`/${route}`); 
    }; 
}; 

и называют его actions.goTo('staff', push) из компонента.

+0

Я попробовал это, я получил эту ошибку в replaceRoutesMiddleware.js 'Uncaught TypeError: Не удается прочитать«типа»свойства из undefined' – mikilka