reactjs - 导入使用 React-Router-Dom 的自定义模块组件时出现问题

标签 reactjs npm react-router create-react-app

当尝试通过将导入的项目转换为节点模块来从我的另一个项目导入组件时,该组件显示为未定义。 该组件使用 React-Router-Dom,它有自己的定义:

<Link to=""> <Link />

然后将该组件导入到具有自己的路由器的父项目中,但是在编译时,发现该组件未定义。

可能是什么问题导致了这个问题?

尝试:

  1. 从组件中删除了所有react-router-dom导入并将组件导出为纯html文件,从而成功导出组件。

  2. 从导出的组件中删除了路由器,只留下了链接包装器。

  3. 不再需要历史记录

导出的组件:

     export default function ExampleWrapper({ history }) {
       return (
        <div>
           <Router>
            <div>
                <Link to="/example">
                    <button>Example</button>
                </Link>

                <Link to="/secondExample">
                    <button>secondExample</button>
                </Link>
            </div>

            <Fragment >
                <Switch >
                    <Route path="/example" exact component={Example} />
                    <Route path="/secondExample" exact component={SecondExample} />
                </Switch>
            </Fragment>
          </Router>
        </div>

用于在模块索引中公开导入的索引:

export default Example;

export { SecondExample, ThirdExample, ExampleWrapper};

使用节点模块导出的组件:

import { ExampleWrapper } from 'create-react-library';

function App() {
    return (
        <div className="App">

            <ExampleWrapper history={history} />

            <Router history={history}>
                <Navbar />
                <header className="App-header">
                    <div className="columns is-marginless">
                       <Fragment>
                           <Switch>
                              <Route path="/admin/home" exact component={Home} />
                           </Switch>
                        </Fragment>
                     </div>
                 </header>
             </Router>
         </div>
   );
}

错误代码:

Cannot read property 'dispose' of undefined
./node_modules/react-dev-utils/webpackHotDevClient.js
C:/Users/userName/DEV/concepts/admin-ui/node_modules/react-dev-utils/webpackHotDevClient.js:45

最佳答案

您需要在父项目中编辑 webpack.config.js,添加子项目所需的依赖项。

就您而言:

  externals: (isEnvDemo || isEnvProduction)
  ? {
    react: 'react',
    'react-dom': 'react-dom',
    'react-router-dom': 'react-router-dom'
  }

关于reactjs - 导入使用 React-Router-Dom 的自定义模块组件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56546219/

相关文章:

javascript - 在 React 中获取子属性

javascript - react-dropdown - 如果调用 setState,显示不会改变

node.js - 修复 Ubuntu 上的 npm 全局安装

javascript - redux 如何使用 react-router 在 componentWillMount 上重定向

javascript - react 路由器 : How to change path URL when redirect to a component by typing path?

javascript - React 路由器参数和查询不起作用

reactjs - 未定义的“_isMockFunction”

ios - 重置推送通知/设备注册/实例 ID - 通过 TestFlight 或 App Store 更新应用程序 - Firebase 云消息传递 iOS/React Native Firebase

node.js - npm:如何在每次更改时运行测试和 lint?

javascript - 如何读取SSL数据?