1.請(qǐng)求數(shù)據(jù)(ajax)
2.更新數(shù)據(jù)(setState)
3.事件監(jiān)聽(onclick)
4.初始化state
:初始化state放在construct里面
代碼里可以setState的為:
onclick,
componentDidMount,
componentWillReceiveProps
生命周期面試題整理
1.react 生命周期函數(shù)(9個(gè))
初始化階段:
componentWillMount:組件即將被裝載尉咕、渲染到頁面上
render:組件在這里生成虛擬的 DOM 節(jié)點(diǎn)
componentDidMount:組件真正在被裝載之后
construct
運(yùn)行中狀態(tài):
componentWillReceiveProps:組件將要接收到屬性的時(shí)候調(diào)用
shouldComponentUpdate:組件接受到新屬性或者新狀態(tài)的時(shí)候(可以返回 false胆胰,接收數(shù)據(jù)后不更新钮呀,阻止 render 調(diào)用巩剖,后面的函數(shù)不會(huì)被繼續(xù)執(zhí)行了)
componentWillUpdate:組件即將更新不能修改屬性和狀態(tài)
render:組件重新描繪
componentDidUpdate:組件已經(jīng)更新
銷毀階段:
componentWillUnmount:組件即將銷毀
2.shouldComponentUpdate 是做什么的绑改,(react 性能優(yōu)化是哪個(gè)周期函數(shù)芥牌?)
shouldComponentUpdate 這個(gè)方法用來判斷是否需要調(diào)用 render 方法重新描繪 dom寸爆。因?yàn)?dom 的描繪非常消耗性能替废,如果我們能在 shouldComponentUpdate 方法中能夠?qū)懗龈鼉?yōu)化的 dom diff 算法兴革,可以極大的提高性能绎晃。
should為什么這么重要?
1should可以自定義是否更新組件
2通過should優(yōu)化更新效率
3.在生命周期中的哪一步你應(yīng)該發(fā)起 AJAX 請(qǐng)求?````
1用戶點(diǎn)擊時(shí),2越早越好
放construct里和componentDidMount,
但是construct中不能使用setState.
原因是:Fiber有了調(diào)度render執(zhí)行順序的能力,所以componentWillMount方法的執(zhí)行變得不確定
4.setState合并狀態(tài)后的幾個(gè)生命周期函數(shù)的調(diào)用順序?(用戶點(diǎn)擊一個(gè)按鈕,你調(diào)用setState時(shí)會(huì)更新哪幾個(gè)鉤子?)
shouldComponentUpdate -> componentWillUpdate -> render -> componentDidUpdate