Skip to content
On this page
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的更新流程一样
  },
}