<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
為了說明元件的建立,存在,銷燬的過程,react提供了元件的生命週期,共分三大週期:
建立期共分五個階段:
componentWillMount
, render
, componentDidMount
第一個階段 元件定義預設屬性資料
defaultProps靜態屬性中定義
元件尚未建立
第二個階段 元件初始化狀態資料
在建構函式中定義constructor
一定要執行super(props),實現建構函式繼承,並且要傳遞屬性資料引數
繼承之後,this.props與props就沒有區別了
我們為this.state賦值,機可以初始化,
在建構函式中,我們可以存取屬性資料,因此可以用屬性資料為狀態資料賦值
這樣就實現了資料有外部流入內部
第三個階段 元件即將被構建
通過componentWillMount方法定義
此時可以存取到屬性資料以及狀態資料,並且無法存取虛擬DOM
我們可以提前請求資料,我們也可以為需要在虛擬DOM中使用的外掛,初始化。
第四個階段 渲染元件
我們通過render方法定義
返回值是渲染的虛擬DOM
此時可以存取到屬性資料以及狀態資料,無法存取虛擬DOM
所以我們在渲染虛擬DOM的時候,可以用屬性資料或者狀態為虛擬DOM賦值
第五個階段 元件構建完成
我們通過componentDidMount方法定義
此時可以存取到屬性資料以及狀態資料,也可以存取虛擬DOM
因此我們可以在這個階段,傳送請求,繫結事件等實現一些互動
該階段方法執行完畢,標誌著元件建立期的結束,存在期的開始,
所以該方法在元件範例化物件的一生中,只執行一次。
我們可以在這個階段修改狀態資料,
一旦屬性
或者狀態
資料發生改變,元件將進入存在期。
在渲染庫(react-dom)中,提供了findDOMNode的方法,可以獲取虛擬DOM對應的真實DOM元素。
// 定義元件 class GoTop extends Component { // 2 初始化狀態資料 constructor(props) { super(props); // 狀態 // 用屬性資料,為狀態資料初始化 this.state = { text: props.text } console.log(222, 'constructor', this, arguments) } // 3 元件即將構建 componentWillMount() { console.log(333, 'componentWillMount', this, arguments, findDOMNode(this)) } // 4 渲染虛擬DOM render() { console.log(444, 'render', this, arguments) return <span>{this.state.text}</span> } // 5 元件構建完成 componentDidMount() { console.log(555, 'componentDidMount', this, arguments, findDOMNode(this)) } } // 1 預設屬性資料 GoTop.defaultProps = { text: '返回頂部' } // 渲染元件 render(<GoTop />, app)
虛擬DOM可以新增子虛擬DOM,元件是對虛擬DOM的封裝,因此他們的行為是一致的,元件也可以定義子元件
在該元件
中定義的元件
,我們稱之為該元件
的子元件
,該元件
稱之為父元件
<Zss> <Demo /> </Zss>
Zss元件就是父元件,Demo元件就是子元件。
元件是完整獨立的,因此資料不會共用,想讓元件之間共用資料,我們要實現元件間的通訊。
到此這篇關於React中的生命週期和子元件的文章就介紹到這了,更多相關React 生命週期 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45