我尝试在push
中添加redux-router
方法。
当我初始化动作时,推送接收有效负载中的对象,但不要更改页面。
enter image description here
动作/ 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>
);
}
}
&#13;
答案 0 :(得分:0)
因此,push()
可能只能在连接的组件内部工作。如果要从actions/index.js
文件中使用它,可以将其作为参数传递并在其中调用,而无需导入它。你可以有类似的东西:
export const actions = {};
actions.goTo = (route, push) => {
return () => {
push(`/${route}`);
};
};
并从您的组件中将其称为actions.goTo('staff', push)
。
答案 1 :(得分:0)
编写中间件时可能会出错。
注意:路由器中间件应该在Logger中间件之后。
喜欢这个:
compose(
applyMiddleware(...middleware),
reduxReactRouter({ createHistory })
);