React 复选框用 checked 还是 defaultChecked,多选状态怎样保存?
区分复选框的勾选状态与提交值,说明 checked、defaultChecked、event.target.checked 和多选 ID 集合的关系,以及全选、禁用项和半选状态的边界。
React面试题第 1 页,显示第 1–50 题,共找到 281 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
区分复选框的勾选状态与提交值,说明 checked、defaultChecked、event.target.checked 和多选 ID 集合的关系,以及全选、禁用项和半选状态的边界。
围绕“如何利用把 JSX 作为 children 传入的方式减少 React 组件间不必要的 props 传递”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须示范用 children 开洞让中间层不感知内容的做法及其对重渲染的影响。
围绕“为什么不能把 React 的 children 当普通数组随意操作,官方提供了什么替代手段”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 children 可能是单节点、数组或函数导致直接 map 不可靠,以及 Children 工具方法的作用与替代思路。
围绕“用 cloneElement 给 React 子组件偷偷注入 props 有什么隐患,更好的替代方案是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须指出 props 来源隐晦、覆盖冲突等问题并给出显式传 props 或 Context 的替代。
用商品筛选页说明怎样从职责、数据流和变化原因建立组件层级,先做静态视图再识别最小状态,避免按每个 div 拆组件、把派生结果重复保存或过早使用 Context。
围绕“什么是 React 的复合组件模式,为什么 Select/Option 这类组件适合用它设计”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明父子组件通过隐式共享(如 Context)协作形成的声明式 API 及其优势。
围绕“给 React 组件设计配置接口时,传配置对象和用复合组件两种风格如何取舍”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按定制深度、类型约束和可读性给出取舍依据。
围绕“React 条件渲染时同类组件的状态为什么会保留或丢失,和组件在树中的位置有什么关系”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 React 按位置加类型匹配决定是否复用状态,并给出用 key 或改变位置控制重置的手段。
围绕“开发组件库时,如何让一个 React 组件同时支持受控和非受控两种用法”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出『value 是否传入』判定与内部默认 state 合并的实现思路和切换警告规避,不复述受控非受控基础定义。
React 输入框为什么提示从非受控变为受控?从异步回填 undefined、文本空值和复选框 checked 类型入手,说明默认值、稳定模式和组件重建的区别。
从当前值的权威来源比较受控与非受控表单,说明实时联动、提交读取、外部重置和性能取舍,避免把非受控误解为没有状态,或认为受控模式一定更慢。
围绕“什么时候应该把 React 组件里的逻辑抽成自定义 Hook,它对组件设计和测试有什么好处”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出『相同状态逻辑出现在多个组件』的抽取信号及 Hook 单独可测的好处。
区分默认值与用户当前编辑值,说明异步数据回填、表单 reset、业务 key 重建与 ref 命令式赋值的选择,避免用随机 key 覆盖草稿或将 defaultValue 当成持续绑定。
围绕“如何让依赖网络请求的 React 组件在测试中不真的发请求,设计上要怎么改”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出把数据获取函数作为 props 注入或上移到容器组件的改造方式。
围绕“为什么在 React 18 中错误边界必须用 class 组件实现,函数组件加 Hook 为什么做不到”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 getDerivedStateFromError 与 componentDidCatch 无 Hook 等价物及社区封装方案的。
围绕“React 错误边界的降级 UI 和 componentDidCatch 里分别应该放什么内容”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分降级 UI 的可恢复引导与 componentDidCatch 中错误上报的职责划分。
围绕“React 应用里错误边界应该放在根级一个还是按功能模块放多个,怎么权衡”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按故障隔离范围与降级体验给出分层放置策略。
围绕“React 错误边界显示降级 UI 后,如何设计重试机制让组件树恢复正常”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出通过重置 key 或重挂载触发子树重新渲染的恢复手段及防止立刻再次崩溃的注意点。
围绕“React 错误边界捕获不到哪些错误,事件回调和异步代码里的报错该怎么办”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须列清渲染期可捕获与事件处理、异步、SSR 中不可捕获的边界,并给出 try/catch 兜底方案。
说明文件选择与普通字符串输入的差异,通过 files 和 File 对象读取用户选择,区分文件路径、上传状态、清空选择及 accept 提示和服务端校验。
围绕“React 表单提交成功后,受控与非受控表单各自该如何重置”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须分别给出受控(重置 state)、非受控(form.reset 或 key 重挂载)及 React 19 action 自动重置的做。
围绕“React 表单里哪些值不应该放进 state,如何避免冗余状态导致的不一致”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出区分『源数据』与『渲染期可计算值』的判据并示范派生计算。
围绕“React 表单的校验应该在输入时、失焦时还是提交时触发,如何为不同字段选择时机”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按错误打扰程度与性能给出分字段的时机策略。
围绕“React 非受控表单在提交时如何一次性读取所有字段的值”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须示范 submit 事件中用 FormData 读取全部字段及其适用边界(动态数组、文件)。
围绕“为什么给 React 组件换一个 key 能重置它的内部状态,代价是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 key 变化触发卸载重建的机制与丢失焦点、重新请求等代价。
从状态归属、共享范围与生命周期解释状态提升和 Context 的关系:先确定共同所有者,再选择 props 或 Context 分发,避免用组件层数替代状态设计。
围绕“当 React 组件有头部、主体、底部多个可定制区域时,单个 children 不够用该怎么办”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出以多个接收 JSX 的 props 充当命名插槽的方案及与单一 children 的边界。
围绕“在 React 组件内部定义另一个组件为什么会导致输入框每次渲染都丢失焦点”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须定位为每次渲染产生新组件类型导致卸载重建,修复是移到外层或提为模块级组件。
区分编辑字符串、空值和合法业务数字,解释 Number 空字符串、valueAsNumber 与 NaN 的边界,并用完整 JSX 示例演示保留空输入、提交时校验与数值转换。
围绕“通过 Portal 渲染的 React 弹窗,点击事件会冒泡到谁那里,为什么父组件仍能收到”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明事件沿 React 组件树而非 DOM 树冒泡这一关键差异及由此产生的误触发风险。
围绕“为什么 React 的弹窗、下拉菜单常需要用 Portal 渲染到 body 下,即使定位看似没问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释父级 overflow 裁剪和层叠上下文限制,以及 Portal 如何脱离 DOM 层级。
围绕“React 表单如何防止用户在请求未完成时重复提交”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须比较本地 pending state 禁用按钮与 React 19 的 useFormStatus 两种做法。
围绕“解决 React 逐层透传 props(prop drilling)时,组合和 Context 该怎么选”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须比较组件组合注入与 Context 在耦合度、重渲染、数据性质上的差异。
围绕“把 props 直接用作 React state 初始值时,为什么后续 props 变化不会同步,正确做法有哪些”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 useState 初始值只在首次渲染生效,并比较 key 重挂载、渲染期派生、受控化三种修复的适用场景。
围绕“为什么说保持 React 组件渲染纯净能提高可测试性,哪些副作用会破坏这种纯净”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须指出渲染期修改外部变量、依赖可变全局值等破坏可预测性的写法及修复方向。
围绕“React 19 中 form 的 action 属性和传统 onSubmit 处理方式有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 action 函数自动接收 FormData、配合 useActionState 管理提交结果的新流程,需明确这是 React。
围绕“React 中复用逻辑时,render props 模式和自定义 Hook 各适合什么场景”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按是否涉及 UI 结构定制给出选型标准。
围绕“设计一个可复用的 React 表单字段组件时,props 接口应该怎么设计才好用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖完整回答要覆盖 label、错误信息、ref 转发与原生属性透传的接口设计。
解释原生 select multiple 的字符串数组 value、selectedOptions 与 FormData.getAll,说明选项删除、异步回填、空选择和选中顺序的业务边界。
用字段 name 与函数式对象更新组织通用处理器,说明 checkbox、number、select multiple 和 file 的读取差异,以及字段白名单、嵌套路径与表单状态拆分边界。
围绕“React 状态提升过度会带来什么问题,如何判断状态应该就近放置”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明过度提升导致无关组件重渲染和 props 臃肿,并给出就近放置的判据。
围绕“测试 React 组件时为什么应该断言用户可见的行为而不是组件内部 state”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明绑定实现细节的测试在重构时误伤、行为断言稳定的原因及取舍边界。
围绕“为什么 React 的 textarea 用 value 属性而不是子节点设初始内容,这和 HTML 有何不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 React 统一用 value/defaultValue 取代 HTML 的文本子节点写法及迁移注意点。
围绕“为什么 React 19 的 useFormStatus 必须写在 form 内部的子组件里才有效”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释它从最近的父 form 读取提交状态、与按钮组件复用的关系。
围绕“为什么自定义 React 输入组件通常遵循 value/onChange 的约定,这样做有什么好处”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明该约定让自定义组件可无缝替换原生控件并被统一表单逻辑接管。
解释 Provider 与消费者之间的 memo 边界为何不能拦截 Context 更新,区分 props、Context 和本地状态三种渲染来源,并说明外层读取、内层接收必要 props 的优化方式。
围绕“React 中把子树以 children prop 传入有状态的父组件,为什么父组件状态变化时这些子组件不会重渲染”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出 children 是父级创建的元素对象、引用未变则被跳过这一机制,不讨论它作为 context 替代方案的数据传递作用。
useContext 解构某个字段为什么不等于按字段订阅?从 Object.is、最近 Provider、原地修改对象和父组件渲染几个角度,解释 Context 消费者的更新范围与诊断步骤。
围绕“React 中设计一个可被父组件共享其值的可复用组件时,受控与非受控两种模式的状态归属差别是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答清受控模式状态归父组件、非受控归组件内部,以及同一组件混用两种模式的冲突,不展开表单具体实现。
createContext 的默认值只在没有匹配 Provider 时使用吗?解释 Provider 传 undefined、嵌套覆盖、同组件读取与模块重复加载,并给出缺失 Provider 的排查顺序。