我遇到了一个问题,我无法找到任何以前的答案或文档 .
我正在我的本地计算机上将模块中的组件“login.jsx”加载到“index.js”中:
import Login from './login';
export { Login };
“login.jsx”中导出的组件非常基本 .
模块main直接指向index.js文件,我将其导入到create-react-app生成的“App.js”文件中 .
该模块的目录结构如下:
module
| src
| --- components
| --- --- login.jsx
| --- --- index.js
| package.json
值得注意的是,这也是一个create-react-app,但生成的文件都不是链接模块主要导出的一部分 .
当我导入它和console.log时,它将作为字符串导入:“/ static / media / login1d0b2e37.jsx . ”
具体来说,我得到的错误是:
Invalid tag: /static/media/login.1d0b2e37.jsx
因为我试图加载导入:
import { Login } from 'component-module';
直接进入react-router-dom路由 . 直接存在于我的create-react-app文件夹“src”中的所有组件都可以正常渲染 .
记录时:
console.log(Login);
导入后,立即清楚它是一个字符串:“/ static / media / login1d0b2e37.jsx . ”
我的create-react-app项目的目录结构是(一个通用的create-react-app):
create-react-app
| src
| --- App.js
其中存在上述导入,导致将 Login
作为字符串导入 .
使用外部组件的create-react-app开发服务器呈现是否存在一些奇怪的问题?也许在其中一个只是将外部处理为静态的Webpack插件中?
据我所知,create-react-app docs中没有关于此的信息
1 回答
按模块,你的意思是图书馆吗?在某些东西中,您可以通过npm install作为其他应用程序的依赖项安装?
如果是这样,CRA不是为此目的而设计的 . 它旨在创建应用程序 .
如果你真的看到需要为登录组件创建一个库,并希望使用CRA这样做,你可以按照本指南:https://medium.com/@lokhmakov/best-way-to-create-npm-packages-with-create-react-app-b24dd449c354或使用this tool,虽然我自己从来没有尝试过,也无法保证它 .
是否有充分的理由将组件实现为库?库主要用于与开发人员共享通用功能,以便在各自的应用程序中使用 .
如果您只打算在特定应用中使用此组件,我建议您将其作为应用中的组件实现 . 您仍然可以将其实现为独立库,但无需设置构建逻辑 .
并在App.js
import Login from './components/Login