偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

完全理解你的感受。

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

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

問題:為組件而組件

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

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

舉個例子:

圖片圖片

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

為什么這樣很糟糕?

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

正確做法是什么?

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

壞例子:

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

好例子:

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

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

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

如果沒有,直接寫內(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> 就應該包含所有與用戶相關(guān)的東西,不要讓它被五個無意義的包裝組件包裹。

抽離組件前自問:

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

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

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

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

責任編輯:武曉燕 來源: 大遷世界
相關(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會話管理應用安全

2020-02-05 09:00:00

深度學習機器學習人工智能

2022-05-27 21:56:55

索引存儲MySQL 存儲引擎

2017-04-13 17:42:56

華為

2020-12-02 11:18:50

print調(diào)試代碼Python

2020-12-04 10:05:00

Pythonprint代碼

2017-08-16 09:55:36

2025-06-10 02:22:00

2025-11-03 04:00:00

2025-08-13 03:00:00

2025-05-19 04:00:00

2021-01-12 14:21:09

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

2022-03-11 12:31:04

Vue3組件前端

2020-12-11 09:24:19

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

2019-12-17 09:29:02

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

2018-09-28 05:25:53

TopK算法代碼

2021-06-09 06:41:11

OFFSETLIMIT分頁

2015-01-14 14:02:51

SDN
點贊
收藏

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