陌上寒

陌上人如玉
公子世无双

最新发布 第3页

12.4 为什么需要 key-陌上寒

12.4 为什么需要 key

key 是 React 用来判断「新旧列表中的元素是否是同一个」的身份标识——它决定组件是「复用」(保留 DOM 与状态)还是「重建」(状态丢失);用 index 会在列表增删排序时造成状态错位。

赞(0)陌上寒陌上寒12-高频面试题 阅读()去评论
11.15 手写 Tooltip / Popover-陌上寒

11.15 手写 Tooltip / Popover

浮层组件的难点不在渲染,而在定位——要算的是一套完整的中间件链:基础位置 → 翻转(flip,空间不够就换到对侧)→ 位移(shift,仍溢出就沿轴平移)→ 箭头(arrow,跟着指向目标)→ 隐藏(hide,目标不可见就收起来),再补上「跟随(ResizeObserver/scroll)、Port…

赞(0)陌上寒陌上寒11-手写实现 阅读()去评论
11.14 手写表单库-陌上寒

11.14 手写表单库

表单库的核心不是「收集输入值」,而是「一套细粒度的订阅模型 + 一个校验状态机」——难点集中在四处:受控/非受控统一、字段级订阅(而不是整表单重渲染)、异步校验的竞态、校验时机与提交状态机。

赞(0)陌上寒陌上寒11-手写实现 阅读()去评论
11.13 手写状态管理(mini Zustand)-陌上寒

11.13 手写状态管理(mini Zustand)

Zustand 的最小实现只有「一个闭包保存 state + 一个 Set 存监听器 + setState 做浅合并并通知」,React 侧靠 useSyncExternalStore + 选择器(带相等性比较与结果缓存) 订阅——关键难点不是 store 本身,而是「选择器返回新对象时的引用稳定」…

赞(0)陌上寒陌上寒11-手写实现 阅读()去评论
11.12 手写 Suspense-陌上寒

11.12 手写 Suspense

Suspense 的最小实现只有四步——组件在渲染中 throw 一个 thenable → 渲染器捕获它、向上找到最近的边界 → 把「正在等的 promise」记在边界上并让本次渲染作废(重渲染时边界就渲染 fallback)→ promise resolve 时「ping」一次触发重渲染;

赞(0)陌上寒陌上寒11-手写实现 阅读()去评论