【发布时间】:2021-04-20 20:41:53
【问题描述】:
我目前正在使用 AirBnb React 风格指南 (https://airbnb.io/javascript/react/) 开发一个 React 项目
项目的结构是这样的(正如他们在第一章某处建议的那样):
src/
|- components/
| |- Footer/
| | |- index.jsx
| |- Navbar/
| | |- index.jsx
| |- index.js
|- containers/
| |- Layout/
| | |- index.jsx
我的导航栏如下所示:
// File: src/components/Navbar/index.jsx
import React from 'react';
export default function Navbar() {
return <h1>Navbar</h1>;
}
我的页脚也一样,但不是Navbar,而是到处都是Footer。
但是,我不想像这样导入组件:
// File: src/containers/Layout/index.jsx
import Footer from '../../components/Footer';
import Navbar from '../../components/Navbar';
但我想像这样导入它们:
import { Footer, Navbar } from '../../components';
所以我尝试在 components 文件夹中创建一个 index.js 文件,其内容如下:
import Footer from './Footer';
import Navbar from './Navbar';
export default { Footer, Navbar };
但是这给了我以下错误:
Failed to compile.
./src/containers/Layout/index.jsx
Attempted import error: 'Footer' is not exported from '../../components'.
为什么会这样?我尝试过使用以下替代方法: 备选方案 1
export { default as Footer } from './Footer';
export { default as Navbar } from './Navbar';
但这给了我同样的错误,我也试过import * as Footer from './Footer';然后再次导出,但没有成功..
编辑:
经过一些反馈,这是我的页脚文件:
// src/components/Footer/index.jsx
import React from 'react';
export default function Footer() {
return <h1>Footer</h1>;
}
我现在像这样导出它:
// src/components/index.js
import Footer from './Footer';
import Navbar from './Navbar';
export { Footer, Navbar };
当我像这样导入它们时:
// src/containrs/Layout/index.js
import { Navbar, Footer } from '../../components';
export default function Layout({ children }) {
return (
<>
<Navbar />
{children}
<Footer />
</>
);
}
解决方案:我的导出错误,我的 ReactJS 没有正确刷新(我猜是 CLI 错误?文件被缓存了..)
【问题讨论】:
标签: reactjs