成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

請別再這樣無限嵌套組件了!

開發(fā) 前端
有沒有那種瞬間——打開一個 React 文件,看到 <EverythingWrapper>? 包裹著 <Layout>?,再套著 <PageShell>?,外面還有個 <MainContainer>,瞬間只想合上電腦去戶外透透氣?

有沒有那種瞬間——打開一個 React 文件,看到 <EverythingWrapper> 包裹著 <Layout>,再套著 <PageShell>,外面還有個 <MainContainer>,瞬間只想合上電腦去戶外透透氣?

完全理解你的感受。

像俄羅斯套娃一樣層層嵌套組件,看似條理分明,實際上過了頭就成了「架構(gòu)版的意大利面」。

來聊聊組件組合用過頭會帶來什么問題,為什么它拖慢性能和折磨你的心智,以及如何優(yōu)雅地避免。

問題:為組件而組件

React 鼓勵組件化,這是它的核心理念。

但常被忽視的是:組件不是文件夾,你不需要為每個視覺盒子都創(chuàng)建組件。

舉個例子:

圖片圖片

如果在看到真正內(nèi)容之前,組件嵌套層數(shù)已經(jīng)超過六層,那么該好好反思設(shè)計了。

為什么這樣很糟糕?

  • 心理負擔(dān)加重每增加一層,就多一個文件、多一個 import,腦袋跳轉(zhuǎn)的負擔(dān)也跟著加大。
  • 調(diào)試成噩夢出錯時根本不知道問題到底在哪一層?是 ContentContainer 的 padding 出錯,還是 Layout,抑或 PageWrapper?
  • 不必要的重復(fù)渲染樹越深,渲染成本越高。除非你全局 memo 化(大概率沒有),否則性能受到影響。
  • 命名疲勞組件名字越來越像 <InnerCardWrapperShell>,大家都在假裝沒問題。

正確做法是什么?

? 盡量扁平化不帶邏輯、不增加語義價值的包裝組件,直接刪掉。

壞例子:

<Wrapper>
  <Container>
    <Box>
      <ActualContent />
    </Box>
  </Container>
</Wrapper>

好例子:

<div className="p-6 max-w-4xl mx-auto">
  <ActualContent />
</div>

不必為了加個邊距就造組件。

? 有邏輯或復(fù)用才抽離問自己:這段代碼里有業(yè)務(wù)邏輯、有狀態(tài),或者會多處復(fù)用嗎?

如果沒有,直接寫內(nèi)聯(lián)。

合理抽離示例:

<Card>
  <CardHeader title="歡迎!" />
  <CardBody description="感謝注冊。" />
</Card>

無意義抽離示例:

<MarginTopTenWrapper>
  <MaxWidthWrapper>
    <JustifyCenterWrapper>
      <ActualContent />
    </JustifyCenterWrapper>
  </MaxWidthWrapper>
</MarginTopTenWrapper>

沒人想打開三個文件去搞清楚這是幾個像素的邊距。

? 用工具類代替包裝有時候嵌套只是為了布局或?qū)R,這正是實用工具類 CSS(比如 Tailwind)的強項。

<div className="flex justify-center items-center h-screen">
  <ActualContent />
</div>

簡單,干凈,無額外組件,更少混亂。

? 按意圖歸類 UI不是為了視覺結(jié)構(gòu)嵌套,而是根據(jù)功能和邏輯來組織。

比如 <UserCard> 就應(yīng)該包含所有與用戶相關(guān)的東西,不要讓它被五個無意義的包裝組件包裹。

抽離組件前自問:

“我能給這個組件起一個有意義的名字嗎?別人十秒鐘內(nèi)能看懂它嗎?”

如果答案是“嗯……”,那就別抽離,保持內(nèi)聯(lián)。

React 的魅力在于靈活性,但能拆分成組件,不代表就一定該拆。

代碼是給人看的,瀏覽器排第二。

責(zé)任編輯:武曉燕 來源: 大遷世界
相關(guān)推薦

2021-08-05 23:15:19

大數(shù)據(jù)隱私工具

2019-07-10 10:06:24

面試官三次握手四次揮手

2020-06-11 07:00:00

OAuth 2.0會話管理應(yīng)用安全

2020-02-05 09:00:00

深度學(xué)習(xí)機器學(xué)習(xí)人工智能

2022-05-27 21:56:55

索引存儲MySQL 存儲引擎

2017-04-13 17:42:56

華為

2020-12-04 10:05:00

Pythonprint代碼

2020-12-02 11:18:50

print調(diào)試代碼Python

2025-05-19 04:00:00

2017-08-16 09:55:36

2025-06-10 02:22:00

2022-03-11 12:31:04

Vue3組件前端

2021-01-12 14:21:09

云原生云計算技術(shù)

2018-09-28 05:25:53

TopK算法代碼

2021-06-09 06:41:11

OFFSETLIMIT分頁

2020-12-11 09:24:19

Elasticsear存儲數(shù)據(jù)

2019-12-17 09:29:02

數(shù)據(jù)庫架構(gòu)分庫分表

2015-01-14 14:02:51

SDN

2020-06-15 08:12:51

try catch代碼處理器

2023-10-26 16:33:59

float 布局前段CSS
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美在线视频一区二区 | 国产成人免费网站 | 一级爱爱片 | 成人一区二区三区在线观看 | 久久久久久久久精 | 欧美精品v国产精品v日韩精品 | a级大片免费观看 | 日韩精品二区 | 91在线网站 | 黄在线免费观看 | 亚洲一区二区高清 | 亚洲欧美成人在线 | 欧美精品久久久久久 | 一区二区中文 | 成人在线视频网 | 欧美高清性xxxxhd | 免费成人高清在线视频 | 国产精品成人一区二区 | 国产免费a视频 | 99精品久久久久久久 | 国产精品国产馆在线真实露脸 | 99视频在线免费观看 | 欧美大片黄 | 久久精品国产一区二区三区 | aaaaaaa片毛片免费观看 | 九九热免费观看 | 一区二区精品 | 91亚洲欧美 | 久久综合婷婷 | 欧美一区二区在线看 | 97伦理影院 | 国产极品91 | 日本韩国电影免费观看 | 狠狠色狠狠色综合系列 | 美女黄色在线观看 | 国产激情在线 | 亚洲成色777777在线观看影院 | 国产精品一区二区三区免费观看 | 日韩在线小视频 | www.婷婷亚洲基地 | 黄色毛片免费视频 |