1? getDefaultProps(){}
2 getInitialState(){}
3 componentWillMount(){}?這個(gè)階段特點(diǎn)
a?可以獲取this數(shù)據(jù)?不能獲取dom
b?修改數(shù)據(jù)?可以直接引起頁面的改變
c?修改數(shù)據(jù)?不會(huì)觸發(fā)運(yùn)行中的生命周期
這個(gè)生命周期沒什么用(千萬不要在這個(gè)周期做網(wǎng)絡(luò)請求)
原因:react在16版本有一個(gè)大更新佩伤,更新節(jié)點(diǎn)從16.3版本晦毙,16.3版本之前是同步渲染,
16.3之后變成異步渲染(fiber)之后導(dǎo)致問題:渲染前的生命周期可能會(huì)被意外情況打斷见妒,一旦被打斷之后,生命周期會(huì)重新執(zhí)行,所以在這里放網(wǎng)絡(luò)請求會(huì)導(dǎo)致網(wǎng)絡(luò)請求的多次發(fā)出
該生命周期在17版本后被廢棄钱豁,現(xiàn)階段是不安全的生命周期
注:componentWillMount->UNSAFE_componentWillMount
這些生命周期鉤子已重命名疯汁,你仍然可以使用舊版本周期函數(shù)牲尺,但控制臺會(huì)警告
4 componentDidMount(){}
a?有dom?有數(shù)據(jù) 幌蚊、可以做網(wǎng)絡(luò)請求,做初始化的操作蜒简,初始化swiper、better-scroll
b?數(shù)據(jù)的修改不能直接引起頁面的改變臭蚁,需要通過setState
c?數(shù)據(jù)的修改會(huì)觸發(fā)運(yùn)行中的生命周期
5?shouldComponentUpdate(props,state){}
a?該生命周期控制數(shù)據(jù)修改是否要更新頁面
返回true? 更新? ?返回?false?不更新
b?通過該生命周期減少無關(guān)的頁面更新
c?參數(shù)props和state是將要更新的數(shù)據(jù)
this里的props和state指的是更新前的數(shù)據(jù)(還沒更新的數(shù)據(jù))
6?componentWillUpdate(){}
a?頁面更新前觸發(fā)
b?數(shù)據(jù)dom元素都是更新之前的也是在render之前
該生命周期也將要被廢棄
c?will和did減少數(shù)據(jù)更新的操作
7?componentDidUpdate(){}
注意:
a 不要在更新里做更新數(shù)據(jù)的操作讯赏,因?yàn)闀?huì)引起死循環(huán)
b?在更新操作結(jié)束之后觸發(fā),數(shù)據(jù)和dom都是修改之后的
8?componentWillReceiveProps(props){
?a?監(jiān)聽props發(fā)生改變
?b 參數(shù)里是更新之后的數(shù)據(jù)?
? c this里是更新之前的數(shù)據(jù)
9 componentWillUnMount(){}
a?擦屁股解決遺憾的操作