国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

組件化開(kāi)發(fā)之如何封裝組件-react

這篇具有很好參考價(jià)值的文章主要介紹了組件化開(kāi)發(fā)之如何封裝組件-react。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

什么是組件

組件是構(gòu)建用戶界面的基本單元,它是一個(gè)獨(dú)立的、可重用的、可組合的代碼單元,用于表示UI的一部分。
人話:當(dāng)談?wù)摻M件時(shí),就像在搭積木一樣,每個(gè)組件都是一個(gè)獨(dú)立的、可以重復(fù)使用的代碼塊,用來(lái)構(gòu)建網(wǎng)頁(yè)或應(yīng)用的各個(gè)部分。比如界面的布局,像按鈕、文本輸入框這樣的東西。

為什么需要封裝組件

封裝組件有許多好處,這些好處可以幫助提高代碼質(zhì)量、可維護(hù)性和開(kāi)發(fā)效率,同時(shí)也有助于減少錯(cuò)誤和重復(fù)工作。
降低耦合,代碼模塊化,重用性。

組件的分類

函數(shù)組件(Functional Components):

函數(shù)組件是一種使用函數(shù)定義的組件,它接收一個(gè)參數(shù)(通常命名為props),并返回一個(gè)React元素來(lái)描述界面。函數(shù)組件通常用于簡(jiǎn)單的UI部分,沒(méi)有內(nèi)部狀態(tài)?!緹o(wú)法處理內(nèi)部狀態(tài)或生命周期】在React 16.8之后引入的Hooks使得函數(shù)組件也可以具有狀態(tài)和其他特性。

import React from 'react';

const FunctionalComponent = (props) => {
  return (
    <div>
      <h1>Hello, {props.name}!</h1>
      <p>This is a functional component.</p>
    </div>
  );
};

export default FunctionalComponent;

展示型組件:

展示型組件主要負(fù)責(zé)呈現(xiàn)UI,它們接收數(shù)據(jù)(通常通過(guò)props)并根據(jù)這些數(shù)據(jù)渲染界面。展示型組件通常不涉及狀態(tài)管理或業(yè)務(wù)邏輯,而是專注于外觀和展示。

容器型組件:

容器型組件負(fù)責(zé)管理數(shù)據(jù)邏輯和狀態(tài),它們可以包含業(yè)務(wù)邏輯、狀態(tài)管理、數(shù)據(jù)獲取等。容器型組件通常通過(guò)props將數(shù)據(jù)傳遞給展示型組件,以便展示型組件渲染界面。

知道組件分類的意義是?

單一職責(zé)原則: 組件分類可以幫助你將不同的功能和職責(zé)分離。這有助于確保每個(gè)組件只關(guān)注自己特定的任務(wù),遵循單一職責(zé)原則,使代碼更模塊化。

代碼模塊化: 分類使你可以將相關(guān)的代碼塊組織在一起,使其更容易理解和維護(hù)。模塊化的代碼更易于重用和測(cè)試。

可維護(hù)性: 分類可以使維護(hù)更加簡(jiǎn)單。當(dāng)你需要修改某個(gè)特定功能或邏輯時(shí),你只需要關(guān)注相應(yīng)的組件,而不會(huì)影響其他部分。

提高可讀性: 封裝和分類可以使代碼更具可讀性。通過(guò)查看組件的名稱和分類,其他開(kāi)發(fā)人員可以更快地理解組件的用途和功能。

提高開(kāi)發(fā)效率: 封裝的組件可以在不同項(xiàng)目中重復(fù)使用,從而提高開(kāi)發(fā)效率。你只需要編寫一次代碼,就可以在多個(gè)地方使用。

降低耦合度: 通過(guò)將不同的功能和邏輯分開(kāi),可以降低組件之間的耦合度。這使得修改一個(gè)組件時(shí)不會(huì)影響到其他組件。

增強(qiáng)團(tuán)隊(duì)協(xié)作: 組件分類可以幫助團(tuán)隊(duì)成員更好地了解代碼結(jié)構(gòu),使團(tuán)隊(duì)協(xié)作更加容易和無(wú)縫。

如何拆分組件,需要遵循什么原則

1.保證單一職責(zé)。

假設(shè)你有一個(gè)名為 UserManager 的類,它既負(fù)責(zé)用戶的創(chuàng)建,又負(fù)責(zé)用戶的驗(yàn)證。這就違反了單一職責(zé)原則,因?yàn)閯?chuàng)建和驗(yàn)證是兩個(gè)不同的功能,它們可能會(huì)因不同的原因而發(fā)生變化。

2.高內(nèi)聚低耦合(High Cohesion, Low Coupling)

組件內(nèi)部的元素應(yīng)該緊密關(guān)聯(lián),組件之間的依賴應(yīng)盡量降低。這可以通過(guò)將相關(guān)功能放在同一個(gè)組件中來(lái)實(shí)現(xiàn),從而減少組件之間的耦合。

3.無(wú)副作用

不依賴、不修改外部變量,內(nèi)部操作不影響其它組件。所以組件化的時(shí)候最好不要將獲取數(shù)據(jù)部分放在組件中

補(bǔ)充什么是副作用:
“副作用”(Side Effect)是指函數(shù)或操作對(duì)函數(shù)外部環(huán)境產(chǎn)生的影響,超出了函數(shù)返回值之外的變化。這些影響可以是修改全局變量、修改函數(shù)參數(shù)、寫入文件、修改數(shù)據(jù)庫(kù)等。副作用可以是預(yù)期的,例如在進(jìn)行I/O操作時(shí),也可以是意外的,例如未經(jīng)計(jì)劃的修改全局狀態(tài)。

以下是一些常見(jiàn)的副作用示例:

修改全局變量: 函數(shù)修改全局變量會(huì)導(dǎo)致函數(shù)外部的狀態(tài)發(fā)生變化。
修改傳入的參數(shù): 如果函數(shù)修改傳入的參數(shù),可能會(huì)影響調(diào)用者的數(shù)據(jù)。
文件操作: 讀寫文件會(huì)影響文件系統(tǒng)的狀態(tài)。
網(wǎng)絡(luò)請(qǐng)求: 發(fā)起網(wǎng)絡(luò)請(qǐng)求會(huì)影響網(wǎng)絡(luò)狀態(tài)。
數(shù)據(jù)庫(kù)操作: 修改數(shù)據(jù)庫(kù)會(huì)影響數(shù)據(jù)存儲(chǔ)狀態(tài)。

4.單個(gè)組件文件最好不超過(guò)200或400kb

追求短小精悍,有利于調(diào)試,縮小排錯(cuò)范圍

5.避免函數(shù)有太多的參數(shù)

入口處檢查參數(shù)的有效性,出口處檢查返回的正確性
避免別人使用組件時(shí)傳參有誤,造成很多無(wú)法預(yù)料的報(bào)錯(cuò)。

6.合理組件化

將大塊代碼變成松散耦合且可復(fù)用的組件確實(shí)是有很多優(yōu)點(diǎn),但是并不是所有的頁(yè)面結(jié)構(gòu)都需要被抽離成組件,也不是所有的邏輯部分都需要被抽出到組件外部。我們?cè)趯?shí)際進(jìn)行組件抽離工作的時(shí)候,需要考慮到不要過(guò)度的組件化。那么我們?cè)跊Q定是否要抽離組件的時(shí)候可以根據(jù)以下幾點(diǎn)來(lái)判斷:
a.是否有足夠的頁(yè)面結(jié)構(gòu)/邏輯來(lái)保證它?如果它只是幾行代碼,那么最終可能會(huì)創(chuàng)建更多的代碼來(lái)分隔它。
b.代碼重復(fù)(或可能重復(fù))? 如果某些東西只使用一次,并且服務(wù)于一個(gè)不太可能在其他地方使用的特定用例,那么將它嵌入其中可能會(huì)更好。
c.性能是否會(huì)受到影響?更改 state/props 會(huì)導(dǎo)致組件重新渲染,當(dāng)發(fā)生這種情況時(shí),你需要的是 只是重新去渲染經(jīng)過(guò) diff 之后得到的相關(guān)元素節(jié)點(diǎn)。在較大的、關(guān)聯(lián)很緊密的組件中,你可能會(huì)發(fā)現(xiàn)狀態(tài)更改會(huì)導(dǎo)致在不需要它的許多地方重新呈現(xiàn),這時(shí)應(yīng)用的性能就可能會(huì)開(kāi)始受到影響

如何使用組件?

在 React 中,通常不建議使用全局引用組件,而是推薦使用模塊化的方式來(lái)引入和使用組件。模塊化可以有效地隔離組件的作用域,避免命名沖突和其他問(wèn)題。以下是如何使用模塊化引入組件的示例:

// 模塊 B 導(dǎo)入模塊 A 中的變量和函數(shù)
import { globalVariableA, greet } from './moduleA';

console.log(globalVariableA); // 局部引用
console.log(greet('Alice')); // 局部引用

參考文章

https://juejin.cn/post/6952777507162554382#heading-14
chatgpt文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-675455.html

到了這里,關(guān)于組件化開(kāi)發(fā)之如何封裝組件-react的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 前端工程化實(shí)戰(zhàn):React 模塊化開(kāi)發(fā)、性能優(yōu)化和組件化實(shí)踐

    前端工程化實(shí)戰(zhàn)是指通過(guò)組織工作流程、使用工具和技術(shù)來(lái)提高前端開(kāi)發(fā)效率和質(zhì)量的一種方法。常見(jiàn)的前端工程化實(shí)踐包括模塊化開(kāi)發(fā)、自動(dòng)化構(gòu)建、代碼檢查和測(cè)試、性能優(yōu)化等。下面將簡(jiǎn)要介紹模塊化開(kāi)發(fā)、性能優(yōu)化和組件化實(shí)踐。 模塊化開(kāi)發(fā) 在 React 中實(shí)現(xiàn)模塊化開(kāi)

    2023年04月10日
    瀏覽(100)
  • React 組件化是什么?

    React 是一個(gè)用于構(gòu)建用戶界面的JavaScript庫(kù),它采用了組件化的開(kāi)發(fā)模式,使得開(kāi)發(fā)者可以將界面劃分為獨(dú)立的、可重用的組件,以便更輕松地管理和維護(hù)復(fù)雜的應(yīng)用程序。 組件化開(kāi)發(fā)是一種將應(yīng)用程序拆分為小塊、可重用的部分的方法。 在React中,每個(gè)組件都有自己的狀態(tài)

    2024年02月10日
    瀏覽(20)
  • React初體驗(yàn)-Hello React的組件化方式-React入門小案例

    React初體驗(yàn)-Hello React的組件化方式-React入門小案例

    接下來(lái)我們通過(guò)Hello React的案例, 來(lái)體驗(yàn)一下React開(kāi)發(fā)模式, 以及jsx的語(yǔ)法 Hello React案例演練 第一步: 先引入React開(kāi)發(fā)依賴 第二步: 這里我們編寫React的script代碼中,必須添加 type=\\\"text/babel\\\" ,作用是可以讓babel解析jsx的語(yǔ)法 第三步: 創(chuàng)建元素渲染到頁(yè)面 React18之前的做法: 通過(guò) R

    2023年04月08日
    瀏覽(21)
  • Android組件化方案及組件消息總線modular-event實(shí)戰(zhàn),渣本Android開(kāi)發(fā)小伙如何一步步成為架構(gòu)師

    Android組件化方案及組件消息總線modular-event實(shí)戰(zhàn),渣本Android開(kāi)發(fā)小伙如何一步步成為架構(gòu)師

    美團(tuán)外賣團(tuán)隊(duì)開(kāi)發(fā)的一款A(yù)ndroid路由框架,基于組件化的設(shè)計(jì)思路。主要提供路由、ServiceLoader兩大功能。之前美團(tuán)技術(shù)博客也發(fā)表過(guò)一篇WMRouter的介紹:《WMRouter:美團(tuán)外賣Android開(kāi)源路由框架》。WMRouter提供了實(shí)現(xiàn)組件化的兩大基礎(chǔ)設(shè)施框架:路由和組件間接口調(diào)用。支持和文

    2024年04月22日
    瀏覽(17)
  • React【React是什么?、創(chuàng)建項(xiàng)目 、React組件化、 JSX語(yǔ)法、條件渲染、列表渲染、事件處理】(一)

    React【React是什么?、創(chuàng)建項(xiàng)目 、React組件化、 JSX語(yǔ)法、條件渲染、列表渲染、事件處理】(一)

    ? ? ? ?React是什么? 為什么要學(xué)習(xí)React? React開(kāi)發(fā)前準(zhǔn)備? 創(chuàng)建React項(xiàng)目?

    2024年02月11日
    瀏覽(23)
  • Android組件化架構(gòu)開(kāi)發(fā)--為什么要使用組件化?組件分層?組件路由的簡(jiǎn)單實(shí)現(xiàn)。

    Android組件化架構(gòu)開(kāi)發(fā)--為什么要使用組件化?組件分層?組件路由的簡(jiǎn)單實(shí)現(xiàn)。

    1.1 單工程項(xiàng)目結(jié)構(gòu) 一般我們都是一個(gè)業(yè)務(wù)建一個(gè)包 缺點(diǎn): 各種業(yè)務(wù)代碼混雜在同一個(gè)模塊里,開(kāi)發(fā)人員在開(kāi)發(fā)、調(diào)測(cè)過(guò)程的效率越來(lái)越低,定位某個(gè)業(yè)務(wù)問(wèn)題,需要在多個(gè)業(yè)務(wù)代碼混合的模塊中尋找和跳轉(zhuǎn)。 需要了解各個(gè)業(yè)務(wù)的功能,避免代碼的改動(dòng)影響其它業(yè)務(wù)的功能

    2024年02月10日
    瀏覽(26)
  • 小程序組件化開(kāi)發(fā)

    小程序組件化開(kāi)發(fā)

    ????隨著小程序的普及,越來(lái)越多的開(kāi)發(fā)者開(kāi)始使用小程序進(jìn)行開(kāi)發(fā),而小程序的組件化開(kāi)發(fā)已經(jīng)成為了一種標(biāo)配的開(kāi)發(fā)模式。本文將深入介紹小程序組件化開(kāi)發(fā)的相關(guān)知識(shí),包括組件的定義、生命周期、通信和使用等方面,幫助大家更好地理解和使用小程序的組件化開(kāi)發(fā)

    2023年04月20日
    瀏覽(23)
  • Vue 組件化開(kāi)發(fā)

    Vue 組件化開(kāi)發(fā)

    提示:這里可以添加本文要記錄的大概內(nèi)容: Vue.js 是一種現(xiàn)代化的前端框架,可以用于構(gòu)建可復(fù)用的組件化應(yīng)用程序。Vue.js 提供了一種基于組件的架構(gòu),使得開(kāi)發(fā)人員可以將應(yīng)用程序分解為多個(gè)可重用的組件。 Vue.js 組件是一個(gè)可復(fù)用的代碼模塊,可以在 Vue.js 應(yīng)用程序中使

    2024年02月15日
    瀏覽(20)
  • 組件化開(kāi)發(fā)復(fù)習(xí)

    組件化開(kāi)發(fā)復(fù)習(xí)

    createApp 函數(shù)傳入了一個(gè)對(duì)象 App ,這個(gè)對(duì)象其實(shí)本質(zhì)上就是一個(gè)組件,也是我們應(yīng)用程序的根組件 可以寫為:? 我們先來(lái)學(xué)習(xí)一下全局組件的注冊(cè): ? 全局組件需要使用我們?nèi)謩?chuàng)建的 app 來(lái)注冊(cè)組件; ? 通過(guò) component 方法傳入組件名稱、組件對(duì)象即可注冊(cè)一個(gè)全局組件了;

    2024年02月15日
    瀏覽(22)
  • 小程序的組件化開(kāi)發(fā)

    小程序的組件化開(kāi)發(fā)

    目錄: 1 小程序組件化思想 2 自定義組件的過(guò)程 3 組件樣式實(shí)現(xiàn)細(xì)節(jié) 4 組件使用過(guò)程通信 5 組件插槽定義使用 6 Component構(gòu)造器 在小程序里面需要?jiǎng)?chuàng)建組件的話需要在最外層建component包,然后在使用新建component來(lái)創(chuàng)建類似page的4個(gè)文件: 組件和頁(yè)面的區(qū)別就是,組件文件會(huì)有額

    2024年02月10日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包