You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ReactJS多组件导出结合withRouter的语法问题求助

解决React同文件多组件导出+withRouter的问题

嘿,我懂你遇到的麻烦了——把两个共用信息的组件放在同一个文件里,其中一个需要靠withRouter来实现this.props.history.push功能,但导出后导入时报错找不到对应组件。这大概率是你在处理withRouter包装后的组件导出时,语法或者命名没搞对。

我给你两种实用的写法,你可以按需选择:

方法一:先包装组件再导出

先定义好两个组件,把需要路由能力的那个用withRouter包装后,再和另一个组件一起做命名导出:

import React from 'react';
import { withRouter } from 'react-router-dom';

// 第一个不需要路由能力的普通组件
const Dnoc_cvat = () => {
  return <div>这是共享信息的普通组件</div>;
};

// 第二个需要路由跳转的基础组件
const Dnoc_cvat_bou_base = (props) => {
  // 类组件可以用this.props.history.push,函数组件直接用props.history.push
  const handleJump = () => {
    props.history.push('/your-target-path');
  };

  return (
    <button onClick={handleJump}>点击跳转页面</button>
  );
};

// 用withRouter包装需要路由能力的组件
const Dnoc_cvat_bou = withRouter(Dnoc_cvat_bou_base);

// 同时导出两个组件
export { Dnoc_cvat, Dnoc_cvat_bou };

方法二:导出环节直接包装组件

这种写法更简洁,不需要额外定义中间组件:

import React from 'react';
import { withRouter } from 'react-router-dom';

// 直接导出第一个普通组件
export const Dnoc_cvat = () => {
  return <div>这是共享信息的普通组件</div>;
};

// 定义需要路由能力的组件
const Dnoc_cvat_bou_base = (props) => {
  const handleJump = () => {
    props.history.push('/your-target-path');
  };

  return (
    <button onClick={handleJump}>点击跳转页面</button>
  );
};

// 导出时直接用withRouter包装目标组件
export const Dnoc_cvat_bou = withRouter(Dnoc_cvat_bou_base);

之后在你的App.js里,就可以正常导入这两个组件了:

import { Dnoc_cvat, Dnoc_cvat_bou } from './components/Dnoc_cvat.js';

额外提醒:React Router v6的情况

如果你用的是React Router v6版本,withRouter已经被官方弃用了,推荐用useNavigate钩子替代,写法更简单,完全不需要包装:

import React from 'react';
import { useNavigate } from 'react-router-dom';

export const Dnoc_cvat = () => {
  return <div>这是共享信息的普通组件</div>;
};

export const Dnoc_cvat_bou = () => {
  const navigate = useNavigate();
  
  const handleJump = () => {
    navigate('/your-target-path');
  };

  return (
    <button onClick={handleJump}>点击跳转页面</button>
  );
};

这样就彻底不用纠结withRouter和多导出的冲突问题啦,直接导入使用就行。

内容的提问来源于stack exchange,提问作者Pol Grisart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:12:03