React使用路由嵌套+react-redux+hook时,获取不到props

背景:

使用路由嵌套加载路由

使用react-redux和hook管理组件

问题:

当路由跳转到该模块时,定义的props参数无法获取到

export default function RouterLayoutConfigAddComponent(props: RouterLayoutConfigAddProps) {
    const {RouterLayoutConfigAddOnDragEnd} = props;
    return (
        <Provider store={RouterLayoutReducers}>
            <DragDropContext onDragEnd={RouterLayoutConfigAddOnDragEnd}
                             key="DragDropContext">
                <Row gutter={0}>
                    <Col span={4} className="center-layout-col"
                         key={`RouterDashboardDeom-list-col-${1}`}>
                        <RouterLayoutConfigAddLeft/>
                    </Col>
                    <Col span={20} className="center-layout-col"
                         key={`RouterDashboardDeom-list-col-${2}`}>
                        <RouterLayoutConfigAddRight/>
                    </Col>
                </Row>
            </DragDropContext></Provider>
    )
}

问题原因:

在路由嵌套时,使用了高级组件RouteWithSubRoutes进行了处理,应该是将props覆盖了。

export const RouteWithSubRoutes = function (route: any) {
    return (
        <Route
            path={route.path}
            exact={!!route.exact}
            render={props => (
                // pass the sub-routes down to keep nesting
                <route.component {...props} routes={route.children} />
            )}
        />
    );
}

修改方案:

1、重新定义一个空组件,加载之前的组件。

export default function RouterLayoutConfigAdd(props: any) {
    return (<RouterLayoutConfigAddPage/>)
}

2、此时报错,报错信息为:

Could not find "store" in the context of "Connect(RouterLayoutConfigAddComponent)". Either wrap the root component in a <Provider>, or pass a custom React context provider to <Provider> and the corresponding React context consumer to Connect(RouterLayoutConfigAddComponent) in connect options.

3、根据报错信息将1、Provider提升,解决该问题

export default function RouterLayoutConfigAdd(props: any) {
    return (<Provider store={RouterLayoutReducers}><RouterLayoutConfigAddPage/></Provider>)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值