React函數(shù)組件和類組件的區(qū)別及說明
React函數(shù)組件和類組件區(qū)別
定義組件有兩個要求:
- 組件名稱必須以大寫字母開頭
- 組件的返回值只能有一個根元素
函數(shù)組件
function Welcome (props) {
? return <h1>Welcome {props.name}</h1>
}
ReactDOM.render(<Welcome name='react' />, document.getElementById('root'));函數(shù)組件接收一個單一的 props 對象并返回了一個React元素
類組件
class Welcome extends React.Component {
? render() {
? ? return (
? ? ? <h1>Welcome { this.props.name }</h1>
? ? );
? }
}
ReactDOM.render(<Welcome name='react' />, document.getElementById('root'));- 無論是使用函數(shù)或是類來聲明一個組件,它決不能修改它自己的 props。
- 所有 React 組件都必須是純函數(shù),并禁止修改其自身 props 。
- React是單項數(shù)據(jù)流,父組件改變了屬性,那么子組件視圖會更新。
- 屬性 props 是外界傳遞過來的,狀態(tài) state 是組件本身的,狀態(tài)可以在組件中任意修改
- 組件的屬性和狀態(tài)改變都會更新視圖。
區(qū)別
函數(shù)組件和類組件當(dāng)然是有區(qū)別的,而且函數(shù)組件的性能比類組件的性能要高,因為類組件使用的時候要實例化,而函數(shù)組件直接執(zhí)行函數(shù)取返回結(jié)果即可。為了提高性能,盡量使用函數(shù)組件。
| 區(qū)別 | 函數(shù)組件 | 類組件 |
|---|---|---|
| 是否有 this | 沒有 | 有 |
| 是否有生命周期 | 沒有 | 有 |
| 是否有狀態(tài) state | 沒有 | 有 |
React函數(shù)式組件和類組件的優(yōu)缺點
1.類組件的性能消耗比較大
因為類組件需要創(chuàng)建類組件的實例,而且不能銷毀。
2.函數(shù)式組件性能消耗小
因為函數(shù)式組件不需要創(chuàng)建實例,渲染的時候就執(zhí)行一下,得到返回的react元素后就直接把中間量全部都銷毀。
函數(shù)式組件是不能有狀態(tài)的,但是現(xiàn)在有了react hooks,也可能有狀態(tài)了。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
在?React?Native?中給第三方庫打補(bǔ)丁的過程解析
這篇文章主要介紹了在?React?Native?中給第三方庫打補(bǔ)丁的過程解析,有時使用了某個React Native 第三方庫,可是它有些問題,我們不得不修改它的源碼,本文介紹如何修改源碼又不會意外丟失修改結(jié)果的方法,需要的朋友可以參考下2022-08-08
如何在 React 中調(diào)用多個 onClick 函數(shù)
這篇文章主要介紹了如何在React中調(diào)用多個onClick函數(shù),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-11-11
作為老司機(jī)使用 React 總結(jié)的 11 個經(jīng)驗教訓(xùn)
這篇文章主要介紹了作為老司機(jī)使用 React 總結(jié)的 11 個經(jīng)驗教訓(xùn),需要的朋友可以參考下2017-04-04

