React 重渲染优化:memo、useMemo 与「状态下放」的优先级
重渲染本身不是问题,被无关状态反复带动重渲染才是。本文给出用 Profiler 定位高开销组件的方法,并按收益从高到低排列状态下放、children 传递、memo 与 useMemo 的使用条件。
共 7 篇文章 · 上级分类 技术分享
重渲染本身不是问题,被无关状态反复带动重渲染才是。本文给出用 Profiler 定位高开销组件的方法,并按收益从高到低排列状态下放、children 传递、memo 与 useMemo 的使用条件。
useEffect 的 bug 大多来自「回调捕获了旧值」,而不是依赖数组写少了。本文用定时器、请求竞态与函数依赖三个例子说明依赖数组的判定方法,并给出清理函数与 useCallback 的稳定写法。
页面卡不一定是 Vue 慢,多数是列表 key 写错、把大对象塞进响应式、或者在一个 computed 里做了太多计算。本文按「先定位再优化」的顺序,给出 DevTools 排查步骤与四个高频改法。
Composition API 让逻辑可以按功能抽成组合函数,但 ref 与 reactive 混用、watch 清理不彻底、跨组件共享状态随意放置,都会带来隐性 bug。本文用一个轮询组合函数说明状态该放哪一层、副作用何时必须清理。
首屏慢往往不是 JS 太重,而是图片太大、字体阻塞渲染。本文按「先测量、再优化」的顺序,给出图片格式与尺寸、font-display、关键 CSS 与布局稳定性的具体做法。
Flexbox 管一维排列,Grid 管二维网格,但真实页面常常两者混用。本文用卡片列表、左右分栏、粘性侧栏三个例子,说明怎么选、怎么组合,以及 auto-fit 与 minmax 的实用写法。