首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将redux-路由器的push方法添加到操作中

如何将redux-路由器的push方法添加到操作中
EN

Stack Overflow用户
提问于 2017-02-16 22:57:55
回答 2查看 443关注 0票数 2

我试图将push方法从redux-router添加到实际操作中。当我开始操作时,按下有效载荷中的接收对象,但不更改页面。在这里输入图像描述

行动/index.js

代码语言:javascript
复制
import { push } from 'redux-router';

export const actions = {};

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

但是,如果我插入的push不是来自动作,而是直接在组件中,它工作正常。

MyComponent/index.js

代码语言:javascript
复制
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>
        );
    }
}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-18 20:10:54

可能是在编写中间件时出错了。

注意:路由器中间件应该紧跟在Logger中间件之后。

就像这个:

代码语言:javascript
复制
compose(
    applyMiddleware(...middleware),
    reduxReactRouter({ createHistory })
);
票数 0
EN

Stack Overflow用户

发布于 2017-02-17 01:56:22

因此,push()只能在连接的组件内部工作。如果您想从您的actions/index.js文件中使用它,您可以将它作为param传递并在那里调用,而不必导入它。你可以拥有这样的东西:

代码语言:javascript
复制
export const actions = {};

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

并从您的组件中调用它为actions.goTo('staff', push)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42286314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档