網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
React函數(shù)組件和類(lèi)組件區(qū)別
定義組件有兩個(gè)要求:
- 組件名稱(chēng)必須以大寫(xiě)字母開(kāi)頭
- 組件的返回值只能有一個(gè)根元素
函數(shù)組件
function Welcome (props) {
? return <h1>Welcome {props.name}</h1>
}
ReactDOM.render(<Welcome name='react' />, document.getElementById('root'));
函數(shù)組件接收一個(gè)單一的 props 對(duì)象并返回了一個(gè)React元素
類(lèi)組件
class Welcome extends React.Component {
? render() {
? ? return (
? ? ? <h1>Welcome { this.props.name }</h1>
? ? );
? }
}
ReactDOM.render(<Welcome name='react' />, document.getElementById('root'));
- 無(wú)論是使用函數(shù)或是類(lèi)來(lái)聲明一個(gè)組件,它決不能修改它自己的 props。
- 所有 React 組件都必須是純函數(shù),并禁止修改其自身 props 。
- React是單項(xiàng)數(shù)據(jù)流,父組件改變了屬性,那么子組件視圖會(huì)更新。
- 屬性 props 是外界傳遞過(guò)來(lái)的,狀態(tài) state 是組件本身的,狀態(tài)可以在組件中任意修改
- 組件的屬性和狀態(tài)改變都會(huì)更新視圖。
區(qū)別
函數(shù)組件和類(lèi)組件當(dāng)然是有區(qū)別的,而且函數(shù)組件的性能比類(lèi)組件的性能要高,因?yàn)轭?lèi)組件使用的時(shí)候要實(shí)例化,而函數(shù)組件直接執(zhí)行函數(shù)取返回結(jié)果即可。為了提高性能,盡量使用函數(shù)組件。?
區(qū)別 | 函數(shù)組件 | 類(lèi)組件 |
---|---|---|
是否有 this | 沒(méi)有 | 有 |
是否有生命周期 | 沒(méi)有 | 有 |
是否有狀態(tài) state | 沒(méi)有 | 有 |
React函數(shù)式組件和類(lèi)組件的優(yōu)缺點(diǎn)
1.類(lèi)組件的性能消耗比較大
因?yàn)轭?lèi)組件需要?jiǎng)?chuàng)建類(lèi)組件的實(shí)例,而且不能銷(xiāo)毀。
2.函數(shù)式組件性能消耗小
因?yàn)楹瘮?shù)式組件不需要?jiǎng)?chuàng)建實(shí)例,渲染的時(shí)候就執(zhí)行一下,得到返回的react元素后就直接把中間量全部都銷(xiāo)毀。
函數(shù)式組件是不能有狀態(tài)的,但是現(xiàn)在有了react hooks,也可能有狀態(tài)了。
原文鏈接:https://wuqiang.blog.csdn.net/article/details/91320529
相關(guān)推薦
- 2022-07-29 pytest?fixtures函數(shù)及測(cè)試函數(shù)的參數(shù)化解讀_python
- 2022-10-05 C++淺析數(shù)據(jù)在內(nèi)存中如何存儲(chǔ)_C 語(yǔ)言
- 2023-05-10 淺談numpy廣播機(jī)制_python
- 2022-11-30 React18?中的?Suspense?API使用實(shí)例詳解_React
- 2022-10-15 Qt網(wǎng)絡(luò)編程實(shí)現(xiàn)TCP通信_(tái)C 語(yǔ)言
- 2022-05-14 react中的axios模塊你了解嗎_React
- 2022-02-19 C語(yǔ)言計(jì)算Robots機(jī)器人行走路線(xiàn)_C 語(yǔ)言
- 2022-07-29 python?判斷字符串當(dāng)中是否包含字符(str.contain)_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支