我已经使用client
创建了两个名为admin-client
和create-react-app
的React应用程序。
在admin-client
中,我想重用client
中已经存在的一些组件,以避免代码重复。
例如,我在Header.jsx
目录中有一个client/src/components/
文件,我想在admin-client
中重新使用它,如下所示:
import React from 'react';
function Header() {
return (
<header>
<h2>Hello World!!</h2>
</header>
);
}
export default Header;
我已经在.env
项目目录中创建了一个admin-client
文件,如下所示:
NODE_PATH='./../'
({admin
和admin-client
在同一父目录中)
然后在admin-client/src/App.jsx
内,我尝试如下导入Header.jsx
:
import React from 'react';
import {Header} from 'client/src/components/Header.jsx';
function App() {
return (
<div>
<Header />
</div>
);
}
export default App;
但是出现以下错误:
../client/src/components/Header.jsx 5:8
Module parse failed: Unexpected token (5:8)
You may need an appropriate loader to handle this file type.
| function Header() {
| return (
> <header>
| <h2>Hello World!!</h2>
我更喜欢找到一个不涉及直接与Babel和/或Webpack进行交易的解决方案,因为这就是我首先使用create-react-app
的原因。
答案 0 :(得分:1)
如果您手动进行,这不是一件简单的任务,您可能最终会在存储库上进行大量更改,只是使其与其他应用程序同步。我建议您安装一个名为Bit
的软件包,该软件包可让您在项目之间共享和同步UI组件。您可以在这里了解更多信息:https://docs.bit.dev/docs/installation.html
NPM
使用NPM安装位:
npm install bit-bin --global
在Windows上安装Bit时,添加--no-optional标志:npm install bit-bin --global --no-optional
答案 1 :(得分:0)
如果要重用组件,只需将其*.jsx
文件复制并粘贴到src/components
中。这是重复使用组件所需的操作。
admin和admin-client位于同一父目录中
这无关紧要。它们是两个不同的应用程序。