组件的神奇之处在于它们的可重用性:你可以创建一个由其他组件构成的组件。但当你嵌套了越来越多的组件时,则需要将它们拆分成不同的文件。这样可以使得查找文件更加容易,并且能在更多地方复用这些组件。
根组件文件
在 你的第一个组件 中,你创建了一个 Profile
组件,并且渲染在 Gallery
组件里。
function Profile() { return ( <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" /> ); } export default function Gallery() { return ( <section> <h1>了不起的科学家们</h1> <Profile /> <Profile /> <Profile /> </section> ); }
在此示例中,所有组件目前都定义在 根组件 App.js
文件中。具体还需根据项目配置决定,有些根组件可能会声明在其他文件中。如果你使用的框架基于文件进行路由,如 Next.js,那你每个页面的根组件都会不一样。
导出和导入一个组件
如果将来需要在首页添加关于科学书籍的列表,亦或者需要将所有的资料信息移动到其他文件。这时将 Gallery
组件和 Profile
组件移出根组件文件会更加合理。这会使组件更加模块化,并且可在其他文件中复用。你可以根据以下三个步骤对组件进行拆分:
这里将 Profile
组件和 Gallery
组件,从 App.js
文件中移动到了 Gallery.js
文件中。修改后,即可在 App.js
中导入 Gallery.js
中的 Gallery
组件:
import Gallery from './Gallery.js'; export default function App() { return ( <Gallery /> ); }
function Profile() { return ( <img src="https://i.imgur.com/QIrZWGIs.jpg" alt="Alan L. Hart" /> ); } export default function Gallery() { return ( <section> <h1>了不起的科学家们</h1> <Profile /> <Profile /> <Profile /> </section> ); }
该示例中需要注意的是,如何将组件拆分成两个文件:
Gallery.js
:
- 定义了
Profile
组件,该组件仅在该文件内使用,没有被导出。 - 使用 默认导出 的方式,将
Gallery
组件导出
App.js
:
- 使用 默认导入 的方式,从
Gallery.js
中导入Gallery
组件。 - 使用 默认导出 的方式,将根组件
App
导出。