在react-redux connect()内部,已连接的反应路由器push()不会改变位置

时间:2018-08-18 08:54:40

标签: reactjs redux react-redux connected-react-router

分派react-redux connect()的mergeProps参数中定义的push操作将分派redux操作,但不会触发url页面更改。我也将withRouter包装在redux容器周围,但似乎无济于事。

//connect.js

import { Component } from './Component';
import { withRouter } from 'react-router-dom';
import { connect } from 'react-redux';
import { push } from 'connected-react-router';
import { onFetch, onUpdate } from '../action-creators';

export default withRouter(connect(state => state, 
{ 
            onFetch, 
            onUpdate,
            push
        },
        ( state, actions ) => ({
            ...state,
            onFetch: actions.onFetch,
            onUpdate: index => {
                actions.onUpdate( index );
                actions.push( `/${ index }` );
            }
        })
    )( Component ));

该如何使用create-react-router软件包触发实际的页面更新以及LOCATION_CNANGE redux操作?此时,仅更新了连接的反应路由器中间件和redux存储,而没有实际的页面更改。

1 个答案:

答案 0 :(得分:0)

通过修改重定向“来自”道具修复了该问题。

根本原因:重定向放置在切换子路由列表的末尾,作为重新路由到主页的综合包。但是,所有请求(包括“ /”以外的有效请求)都转到了catchall重定向并重新路由到了主页。