Appearance
js
Component.prototype.setState = function (partialState, callback) {
this.updater.enqueueSetState(this, partialState, callback, 'setState');
}
const classComponentUpdater = {
enqueueSetState: function (inst, payload, callback) {
var fiber = get(inst); // 当前函数Fiber节点
var eventTime = requestEventTime();
var lane = requestUpdateLane(fiber);
var update = createUpdate(eventTime, lane); // 创建update对象
update.payload = payload; // 赋值payload
if (callback !== undefined && callback !== null) {
update.callback = callback;
}
// 添加到更新队列
enqueueUpdate(fiber, update);
// 调度更新
var root = scheduleUpdateOnFiber(fiber, lane, eventTime);
if (root !== null) {
entangleTransitions(root, fiber, lane);
}
markStateUpdateScheduled(fiber, lane);
// 之后流程和render的更新流程一样
},
}