React 封裝自定義組件的操作方法
一、專欄介紹 ????
本專欄將引領(lǐng)您快速上手React,讓我們一起放棄放棄的念頭,開始學(xué)習(xí)之旅吧!我們將從搭建React項(xiàng)目開始,逐步深入講解最核心的hooks,以及React路由、請求、組件封裝以及UI(Ant Design)框架的使用。讓我們一起掌握React,開啟前端開發(fā)的全新篇章!
二、什么是自定義組件 ????
自定義組件是指根據(jù)應(yīng)用需求,自定義的組件。它們可以是有狀態(tài)的或無狀態(tài)的,可以接受props并返回JSX或null,并且可以包含生命周期方法、refs、context等等。 自定義組件在React應(yīng)用中非常常見,因?yàn)镽eact的核心思想就是組件化。每一個(gè)React頁面都是由一個(gè)或多個(gè)組件構(gòu)成,組件是構(gòu)建React應(yīng)用程序的基石。它們可以封裝可重用的UI組件,使代碼更加模塊化和可維護(hù)。 自定義組件可以有很多用途。例如,它們可以創(chuàng)建可重用的UI組件,如按鈕、表單、布局等。同時(shí),它們也可以用于封裝復(fù)雜的業(yè)務(wù)邏輯,將復(fù)雜的業(yè)務(wù)邏輯抽象為可重用的組件,提高代碼的可維護(hù)性和可重用性。此外,自定義組件還可以用于實(shí)現(xiàn)AOP(面向切面編程),將通用邏輯(如認(rèn)證、日志)封裝到單獨(dú)的組件中,避免在各個(gè)角落重復(fù)編寫代碼。 總之,自定義組件是React中非常重要的概念,它們可以幫助開發(fā)者更好地組織和維護(hù)代碼,提高開發(fā)效率和質(zhì)量。
三、組件需求 ????
根據(jù)需求,需要定義一個(gè)組件,該組件根據(jù)viewMode屬性的不同顯示不同的狀態(tài)。當(dāng)viewMode為edit時(shí),顯示一個(gè)標(biāo)題和輸入框,表示編輯狀態(tài);當(dāng)viewMode為view時(shí),顯示一個(gè)標(biāo)題和一個(gè)內(nèi)容,表示查看狀態(tài)。此外,該組件還需要集成原生的input輸入框,并具有自己的屬性。
四、編寫組件源碼 ????
新建文件src/components/CustomInput.tsx
自定義組件首字母一定要大寫并且使用駝峰命名方式
InputHTMLAttributes<HTMLInputElement>為input框原生的屬性。
import React, { InputHTMLAttributes } from 'react'; import './CustomInput.scss'; const CustomInput: React.FC< InputHTMLAttributes<HTMLInputElement> & { label: string | number; // 這里的意思label屬性可以是一個(gè)字符串也可以是一個(gè)數(shù)字。 viewMode?: 'view' | 'edit'; // 這里的意思是view屬性只能是view或者edit字符串 } > = ({ label, viewMode = 'edit', ...props }) => { // view = 'edit' 表示默認(rèn)值就是edit if (viewMode === 'edit') { return ( <> <div className={'ts-custom-input edit'}> <span>{label}:</span> <input {...props} /> </div> </> ); } return ( <> <div className={'ts-custom-input view'}> <span className={'title'}>{label}:</span> <span className={'content'}>{props.defaultValue}</span> </div> </> ); }; export default CustomInput;
新建文件src/components/CustomInput.scss
.ts-custom-input { width: 100%; height: 26px; line-height: 26px; &.view { .title { color: black; } .content { color: #696767; } } }
使用組件
import React from 'react'; import CustomInput from './components/CustomInput'; function App() { return ( <div className="App"> <CustomInput label="姓名" placeholder="請輸入值" viewMode={'edit'} defaultValue={'我是默認(rèn)值'} onChange={(e) => { console.log('??????-----------------輸入值發(fā)生了變化,現(xiàn)在是:', e.target.value); }} /> <CustomInput label="姓名" viewMode={'view'} defaultValue={'我是默認(rèn)值'} /> </div> ); } export default App;
效果
五、總結(jié) ????
React中自定義組件非常重要、很有必要花時(shí)間好好的學(xué)學(xué)。
自定義組件可以將UI切分成一些獨(dú)立的、可復(fù)用的部件,這樣只需專注于構(gòu)建每一個(gè)單獨(dú)的部件,從而在多個(gè)項(xiàng)目中重用代碼。這提高了開發(fā)效率,降低了維護(hù)成本。
組件化開發(fā)降低了系統(tǒng)各個(gè)功能之間的耦合性,提高了功能內(nèi)部的聚合性。這使得代碼更容易理解和修改,降低了開發(fā)復(fù)雜度。
自定義組件遵循一定的命名和規(guī)范,使得代碼更加清晰和易于維護(hù)。當(dāng)需要修改或擴(kuò)展功能時(shí),只需找到對應(yīng)的組件進(jìn)行修改,而不需要在整個(gè)項(xiàng)目中搜索和修改相關(guān)代碼。
自定義組件使得團(tuán)隊(duì)成員可以更容易地分工合作,每人負(fù)責(zé)一個(gè)或多個(gè)組件的開發(fā)和維護(hù)。這提高了團(tuán)隊(duì)的協(xié)作效率,降低了溝通成本。
自定義組件可以接受不同的屬性和參數(shù),根據(jù)需求進(jìn)行定制。這使得組件具有很高的靈活性,可以適應(yīng)各種場景和需求。
自定義組件可以獨(dú)立地進(jìn)行測試和調(diào)試,這使得問題定位和修復(fù)更加容易。同時(shí),組件的獨(dú)立性也使得自動(dòng)化測試更加容易實(shí)現(xiàn)。
總之,React中自定義組件的重要性在于它們提供了代碼重用、降低耦合性、提升可維護(hù)性、更好的團(tuán)隊(duì)協(xié)作、靈活性和易于測試和調(diào)試等好處,從而提高了開發(fā)效率和質(zhì)量。
到此這篇關(guān)于React 封裝自定義組件的文章就介紹到這了,更多相關(guān)React 封裝組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
React + Threejs + Swiper 實(shí)現(xiàn)全景圖效果的完整代碼
全景圖效果非常漂亮給人帶來極好的用戶體驗(yàn)效果,那么基于前端開發(fā)如何實(shí)現(xiàn)這種效果呢,下面小編給大家?guī)砹薘eact + Threejs + Swiper 實(shí)現(xiàn)全景圖效果,感興趣的朋友一起看看吧2021-06-06簡單的React SSR服務(wù)器渲染實(shí)現(xiàn)
這篇文章主要介紹了簡單的React SSR服務(wù)器渲染實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12React中不適當(dāng)?shù)腍ooks使用問題及解決方案
在 React 開發(fā)中,Hooks 提供了一種強(qiáng)大的方式來管理組件的狀態(tài)和生命周期,然而,不恰當(dāng)?shù)?nbsp;Hooks 使用可能會(huì)導(dǎo)致組件行為異常、性能問題或難以調(diào)試的錯(cuò)誤,本文將探討 React 中常見的不適當(dāng) Hooks 使用問題,并提供解決方案,需要的朋友可以參考下2025-03-03React報(bào)錯(cuò)map()?is?not?a?function詳析
這篇文章主要介紹了React報(bào)錯(cuò)map()?is?not?a?function詳析,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08React路由的history對象的插件history的使用解讀
這篇文章主要介紹了React路由的history對象的插件history的使用,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10ReactNative錯(cuò)誤采集原理在Android中實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了ReactNative錯(cuò)誤采集原理在Android中實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02