<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      『React』子組件的導出與使用:小白也能懂的組件組織方式

      點贊 + 關注 + 收藏 = 學會了

      在 React 中,我們經(jīng)常需要把一個大組件拆分成多個相關的小組件(比如導航欄組件包含多個導航項組件)。這種 “父組件 + 子組件” 的組合方式能讓代碼更清晰、更易維護。

      本文就來教你:如何定義子組件、如何導出子組件,以及如何在父組件中使用它們。全程用最簡單的語言和示例,小白也能輕松學會!

      什么是 “父組件” 和 “子組件”?

      簡單說:

      • 父組件:可以理解為 “容器”,負責整體結(jié)構(gòu)。
      • 子組件:是父組件內(nèi)部的 “零件”,負責具體功能。

      比如一個導航欄(Menu)是父組件,里面的每個導航項(Item)就是子組件。它們是 “整體與部分” 的關系,通常一起出現(xiàn)、一起使用。

      子組件的導出與使用:3 步走

      我以 “導航菜單” 為例,一步步實現(xiàn)父組件包含子組件的完整流程。

      第一步:創(chuàng)建組件文件,定義父組件和子組件

      首先在項目中新建一個組件文件夾(通常叫components),再創(chuàng)建一個Menu文件夾,里面放index.js文件(約定俗成的命名方式)。

      // components/Menu/index.js
      import React from 'react';
      
      // 1. 定義父組件:導航欄容器
      function Menu({ children }) {
        // children 是一個特殊屬性,用來接收組件標簽內(nèi)的內(nèi)容
        return (
          <nav style={{ 
            backgroundColor: '#333', 
            padding: '10px', 
            display: 'flex', 
            gap: '15px' 
          }}>
            {/* 這里會顯示子組件的內(nèi)容 */}
            {children}
          </nav>
        );
      }
      
      // 2. 定義子組件:導航項
      function Item({ children }) {
        return (
          <a 
            href="#" 
            style={{ 
              color: 'white', 
              textDecoration: 'none', 
              padding: '5px 10px' 
            }}
          >
            {children} {/* 接收導航項的文字內(nèi)容 */}
          </a>
        );
      }
      
      // 3. 關鍵步驟:把Item作為Menu的屬性,關聯(lián)起來
      Menu.Item = Item;
      
      // 4. 導出父組件(子組件會跟著父組件一起被導出)
      export default Menu;
      

      重點說明

      • Menu.Item = Item 這行代碼是 “綁定” 子組件到父組件的關鍵,讓子組件成為父組件的一個屬性。
      • 這樣做的好處是:使用時能清晰看出 “Item 是 Menu 的一部分”,避免命名混亂。

      第二步:在頁面中導入父組件

      接下來在主頁面(比如App.js)中導入剛才定義的Menu組件(子組件會跟著一起被導入)。

      // App.js
      import React from 'react';
      // 只需要導入父組件即可,子組件會作為其屬性存在
      import Menu from './components/Menu';
      

      第三步:使用父組件和子組件

      導入后,就可以像這樣使用子組件:父組件.子組件(比如Menu.Item)。

      // App.js 完整代碼
      import React from 'react';
      import Menu from './components/Menu';
      
      function App() {
        return (
          <div style={{ padding: '20px' }}>
            <h1>我的網(wǎng)站</h1>
            
            {/* 使用父組件Menu */}
            <Menu>
              {/* 用Menu.Item使用子組件,內(nèi)容寫在標簽中間 */}
              <Menu.Item>首頁</Menu.Item>
              <Menu.Item>產(chǎn)品</Menu.Item>
              <Menu.Item>關于我們</Menu.Item>
              <Menu.Item>聯(lián)系客服</Menu.Item>
            </Menu>
          </div>
        );
      }
      
      export default App;
      

      頁面會顯示一個黑色導航欄,里面有 4 個白色的導航鏈接,這就是父組件Menu包含 4 個子組件Menu.Item的效果。就是前面截圖的樣子了。

      為什么要這樣組織組件?

      可能你會問:直接單獨導出子組件不行嗎?比如:

      // 另一種方式:單獨導出子組件
      export function Menu() { ... }
      export function Item() { ... }
      
      // 使用時單獨導入
      import { Menu, Item } from './components/Menu';
      

      這種方式當然可以,但用父組件.子組件的方式有 3 個明顯好處:

      1. 關系更清晰:看到Menu.Item就知道這是 Menu 的子組件,不是其他組件。
      2. 避免命名沖突:如果有多個組件都有Item子組件(比如Menu.ItemList.Item),不會混淆。
      3. 符合直覺:就像 “電腦。鍵盤”“手機。屏幕” 一樣,子組件是父組件的一部分,使用起來更自然。

      再舉一個例子:用戶信息組件

      為了加深理解,我們再做一個 “用戶信息” 組件:父組件UserCard(用戶卡片)包含子組件UserCard.Avatar(頭像)和UserCard.Info(信息)。

      // components/UserCard/index.js
      import React from 'react';
      
      // 父組件:用戶卡片容器
      function UserCard({ children }) {
        return (
          <div style={{ 
            border: '1px solid #ddd', 
            borderRadius: '8px', 
            padding: '15px', 
            maxWidth: '300px' 
          }}>
            {children}
          </div>
        );
      }
      
      // 子組件1:頭像
      function Avatar({ src, alt }) {
        return (
          <img 
            src={src} 
            alt={alt}
            style={{ 
              width: '80px', 
              height: '80px', 
              borderRadius: '50%' 
            }}
          />
        );
      }
      
      // 子組件2:用戶信息
      function Info({ name, role }) {
        return (
          <div style={{ marginTop: '10px' }}>
            <h3 style={{ margin: 0 }}>{name}</h3>
            <p style={{ color: '#666', margin: '5px 0 0 0' }}>{role}</p>
          </div>
        );
      }
      
      // 綁定子組件到父組件
      UserCard.Avatar = Avatar;
      UserCard.Info = Info;
      
      // 導出父組件
      export default UserCard;
      

      使用時:

      // App.js 中使用
      import UserCard from './components/UserCard';
      
      function App() {
        return (
          <div style={{ padding: '20px' }}>
            <UserCard>
              <UserCard.Avatar 
                src="https://picsum.photos/id/64/200/200" 
                alt="用戶頭像" 
              />
              <UserCard.Info 
                name="張三" 
                role="前端開發(fā)工程師" 
              />
            </UserCard>
          </div>
        );
      }
      

      這樣就實現(xiàn)了一個包含頭像和信息的用戶卡片,結(jié)構(gòu)清晰,使用方便。

      總結(jié)

      1. 子組件定義:在父組件同一個文件中定義相關的子組件。
      2. 綁定子組件:通過父組件.子組件 = 子組件的方式關聯(lián)(如Menu.Item = Item)。
      3. 導出與導入:只需要導出父組件,導入后通過父組件.子組件使用。
      4. 核心優(yōu)勢:關系清晰、避免沖突、使用直觀。

      這種組件組織方式在實際開發(fā)中非常常用,很多 UI 庫(如 Ant Design、Material-UI)都在用。掌握它,你的 React 代碼會更專業(yè)、更好維護!

      現(xiàn)在就動手試試吧:把上面的示例代碼復制到你的項目中,運行看看效果,再嘗試修改樣式或添加新的子組件,加深理解~


      以上就是本文的全部內(nèi)容啦,想了解更多React用法的工友可以關注《React 中文教程》

      也可以?我 green bubble 吹吹水咯

      點贊 + 關注 + 收藏 = 學會了

      posted @ 2025-07-24 00:19  德育處主任  閱讀(35)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产 麻豆 日韩 欧美 久久| 亚洲av第二区国产精品| 丰满无码人妻热妇无码区| 亚洲国产午夜精品福利| 无码中文字幕日韩专区| 久久久精品2019中文字幕之3| 日韩一区二区三区水蜜桃| 2021亚洲va在线va天堂va国产| 人妻少妇精品中文字幕| 亚洲人黑人一区二区三区| 色狠狠色婷婷丁香五月| 日韩V欧美V中文在线| 97精品国产91久久久久久久| 成在线人视频免费视频| 四虎精品永久在线视频| 午夜毛片不卡免费观看视频| 国产成人8x视频一区二区| 精品人妻日韩中文字幕| 99麻豆久久精品一区二区 | 又大又粗欧美成人网站| 天堂亚洲免费视频| 亚洲区精品区日韩区综合区| 国产亚洲精品国产福APP| 亚洲高清日韩专区精品| 久久亚洲人成网站| 伊人久久大香线蕉综合影院| 国产精品日韩中文字幕| 久久成人成狠狠爱综合网| 狠狠色综合久久丁香婷婷| 成人免费xxxxx在线观看| 久久综合色之久久综合色| 久久久久国产精品熟女影院| 2019国产精品青青草原| 不卡一区二区国产精品| 亚洲精品成人区在线观看| 国产粉嫩一区二区三区av| 中国熟妇毛多多裸交视频| 尉氏县| 亚洲av不卡电影在线网址最新| 亚洲综合中文字幕首页| 中文国产不卡一区二区|