Component應(yīng)該是我們平時寫react代碼用的最多的api之一了窟蓝,Component和PureComponent也是react兩大baseClasses蕾久。
image.png
image.png
Component在初始化的時候,會在this上綁定四個對象杈抢,分別是props酬核,context,refs丰榴,updaters。接著會在原型上綁定一個setState的方法秆撮,setState接受兩個參數(shù)四濒,分別是partialState和一個callback回調(diào)。partialState可以是一個對象职辨,也可以是一個函數(shù)盗蟆。判斷完你傳入的partialState是對象還是函數(shù)后,setState會執(zhí)行一個this.updater.enqueueSetState
方法更新你的state對象舒裤,這個方法是在reactDom里面去實現(xiàn)的喳资,所以放到后面再講。
那么為什么要把enqueueSetState方法綁定在this.updater這樣一個對象上呢腾供。因為更新完state之后涉及到渲染仆邓,這個渲染是跟平臺有關(guān)的。reactDom和react-native渲染方式是不一樣的伴鳖,這樣可以通過傳入一個updater對象來實現(xiàn)對渲染的一個定制方式节值。
而PureComponent則和Component的代碼幾乎一樣,只是多綁定了一個type屬性榜聂,代碼如下
image.png