React 18 的异步自动批处理与 React 17 有什么区别,为什么还要看根 API?
通过 Promise 和定时器内的两个状态更新比较 React 17、React 18 createRoot 与旧入口,说明自动批处理的观察方法和 await 边界。
React面试题第 6 页,显示第 251–281 题,共找到 281 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
通过 Promise 和定时器内的两个状态更新比较 React 17、React 18 createRoot 与旧入口,说明自动批处理的观察方法和 await 边界。
以两个关联设置的点击更新解释批处理,说明中间状态、不同点击事件边界、严格模式日志与实际提交,并区分性能合并和业务事务。
React 中用三元表达式在同一位置渲染两个同类型组件(如条件里都是 <Counter />),为什么 state 会被保留,可能带来什么坑? 本文先给出可直接复述的结论,再用最小代码说明React 条件渲染 同类型组件 state 保留的工作方式、判断依据、项目边界和常见误区。
为什么能从已有 state 或 props 计算出的值,不应该再单独存一份 React state? 本文先给出可直接复述的结论,再用最小代码说明React 派生状态 derived state 渲染期间计算的工作方式、判断依据、项目边界和常见误区。
通过显示输入框后立即聚焦解释 flushSync 的同步 DOM 边界,区分 DOM 已提交与局部 state 快照,并说明额外工作、Effect 和 Suspense 的代价。
用两个并发保存任务解释函数式更新如何组合加减计数,区分队列中的前一状态与闭包中的其他变量,并说明直接设置确定值仍然合理。
想在 React 中临时隐藏一个组件但保留它的 state,有哪些做法、各自取舍是什么? 本文先给出可直接复述的结论,再用最小代码说明React 隐藏组件 保留 state display none的工作方式、判断依据、项目边界和常见误区。
为什么使用 Immer(useImmer)后可以直接「修改」draft,却仍然满足 React 的不可变更新要求? 本文先给出可直接复述的结论,再用最小代码说明React Immer useImmer draft 原理的工作方式、判断依据、项目边界和常见误区。
什么条件下 React 列表用数组下标作为 key 是可以接受的? 本文先给出可直接复述的结论,再用最小代码说明React index 作为 key 可以接受 条件的工作方式、判断依据、项目边界和常见误区。
React 列表用数组下标作为 key,在插入、删除或排序时会出现什么具体问题? 本文先给出可直接复述的结论,再用最小代码说明React index 作为 key 问题 列表 state 错乱的工作方式、判断依据、项目边界和常见误区。
React 中同一个组件被渲染两次(页面上两个 <Counter />),为什么它们的 state 互不影响? 本文先给出可直接复述的结论,再用最小代码说明React 组件实例 state 独立 隔离的工作方式、判断依据、项目边界和常见误区。
React 中把组件移到树中不同的父节点下,即使 key 不变,为什么 state 仍然丢失? 本文先给出可直接复述的结论,再用最小代码说明React 移动组件 不同父节点 key state 丢失的工作方式、判断依据、项目边界和常见误区。
如何利用 React 的 key 在不卸载整个页面的情况下重置某个组件的全部 state? 本文先给出可直接复述的结论,再用最小代码说明React key 重置组件 state 重新挂载的工作方式、判断依据、项目边界和常见误区。
为什么 React 的 key 只需在兄弟节点间唯一,且子组件内部读不到自己的 key? 本文先给出可直接复述的结论,再用最小代码说明React key 兄弟唯一 不能作为 prop的工作方式、判断依据、项目边界和常见误区。
在 React 的组件身份判断中,key 与组件类型分别起什么作用、改变哪一个会重置 state? 本文先给出可直接复述的结论,再用最小代码说明React 组件身份 key 类型 state 重置的工作方式、判断依据、项目边界和常见误区。
React 渲染列表时为什么要求每个元素带 key,React 用 key 做什么? 本文先给出可直接复述的结论,再用最小代码说明React 列表 key 作用 diff 复用的工作方式、判断依据、项目边界和常见误区。
React 中多个相关的值应该用多个 useState 还是合并成一个对象 state,如何取舍? 本文先给出可直接复述的结论,再用最小代码说明React 多个 useState 还是对象 state 取舍的工作方式、判断依据、项目边界和常见误区。
在 React 中直接修改 state 对象的属性(如 user.name = 'x'),为什么界面不会更新? 本文先给出可直接复述的结论,再用最小代码说明React 直接修改 state 对象 不重新渲染的工作方式、判断依据、项目边界和常见误区。
用个人资料中的城市字段解释变更路径复制和结构共享,通过引用比较核对根、父对象、子对象与未变分支,并讨论数组、动态键和深拷贝代价。
React 的 useState 更新对象时为什么不会自动合并字段,与 class 组件的 this.setState 有何不同? 本文先给出可直接复述的结论,再用最小代码说明React useState 替换 不合并 class setState 浅合并的工作方式、判断依据、项目边界和常见误区。
为什么 React 组件重新渲染时 state 不会丢,而从 UI 树中移除后再加回来就丢了? 本文先给出可直接复述的结论,再用最小代码说明React state 与 UI 树位置 保留 重置的工作方式、判断依据、项目边界和常见误区。
为什么 React 要求组件的渲染过程保持纯净,在渲染中修改 state 或外部变量会有什么问题? 本文先给出可直接复述的结论,再用最小代码说明React 组件纯函数 渲染副作用的工作方式、判断依据、项目边界和常见误区。
React 组件会在什么情况下重新渲染,修改一个普通局部变量为什么不触发渲染? 本文先给出可直接复述的结论,再用最小代码说明React 触发重新渲染 条件 render commit的工作方式、判断依据、项目边界和常见误区。
解释 useState 的 Object.is 相等判断,区分相同值跳过更新与函数绝不调用,用零、负零和 NaN 展示比较边界,并连接对象状态的引用问题。
React 中允许在渲染期间调用本组件 setState 的唯一合理模式是什么? 本文先给出可直接复述的结论,再用最小代码说明React 渲染期间 setState 根据 props 调整 state的工作方式、判断依据、项目边界和常见误区。
为什么说 React 的 setState 与 dispatch 函数引用是稳定的,这对依赖数组和 props 传递有什么意义? 本文先给出可直接复述的结论,再用最小代码说明React setState dispatch 引用稳定 依赖数组的工作方式、判断依据、项目边界和常见误区。
从事件闭包解释 React 状态快照,用一次点击与延时日志区分当前函数里的值和下一次界面状态,并说明快照何时正好符合业务需要。
为什么 React 的不可变更新习惯与 React.memo、useMemo 的浅比较是配套的? 本文先给出可直接复述的结论,再用最小代码说明React 结构共享 引用比较 memo 不可变更新的工作方式、判断依据、项目边界和常见误区。
设计 React 组件的 state 结构时应遵循哪些原则? 本文先给出可直接复述的结论,再用最小代码说明React state 结构原则 避免冗余 矛盾 嵌套的工作方式、判断依据、项目边界和常见误区。
用四步混合更新推导 React 的替换与 updater 队列,说明闭包值在入队前已经计算、后续替换覆盖中间结果,以及 updater 必须保持纯函数。
什么情况下应该用 React 的 useReducer 替代 useState? 本文先给出可直接复述的结论,再用最小代码说明React useReducer 替代 useState 场景的工作方式、判断依据、项目边界和常见误区。