请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

memoizedState 两个问题

  1. memoizedState 是不是保存组件中 useStatestate
function processUpdateQueue(workInProgress) {
	const lastPendingUpdate = pendingQueue;
	// 这个 state 是不是页面用的 state
    let newState = workInProgress.memoizedState;
    let update = firstPendingUpdate;
    while (update) {
      newState = getStateFromUpdate(update, newState);
      update = update.next;
    }
}

function getStateFromUpdate(update, prevState) {
  const { payload } = update;
  return assign({}, prevState, payload);
}
  1. 第二个问题
    Object.assign 合并 update.payloadmemoizedState,最后拿到的 element 不是只有 lastPedningUpdateelement 吗,其他 updateelement 都被覆盖了

正在回答 回答被采纳积分+3

1回答

杨艺韬 2023-12-11 22:54:27

关于第一个问题,memoizedState存储的内容不是固定的,不同类型的fiber节点的memoizedState存储的内容是不一样的,我们后续的课程里面主要用在了hook,因为没有写类组件,之所以目前会比较疑惑,是因为现阶段还没有真正使用过memoizedState


关于第二个问题,本身就是为了合并,就应该被覆盖




0 回复 有任何疑惑可以回复我~
  • 提问者 慕盖茨6544834 #1
    第二个问题,后面是不是还有其他东西要处理,现在只是合并了 element
    回复 有任何疑惑可以回复我~ 2023-12-12 18:15:17
  • 杨艺韬 回复 提问者 慕盖茨6544834 #2
    element是基础,这是更新前就要确定的信息,别的逻辑是随着fiber树的构建和更新而完成的
    回复 有任何疑惑可以回复我~ 2023-12-13 20:36:28
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号