什么是 React 的复合组件模式,为什么 Select/Option 这类组件适合用它设计?
围绕“什么是 React 的复合组件模式,为什么 Select/Option 这类组件适合用它设计”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明父子组件通过隐式共享(如 Context)协作形成的声明式 API 及其优势。
React · 表单面试题第 1 页,显示第 1–25 题,共找到 25 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“什么是 React 的复合组件模式,为什么 Select/Option 这类组件适合用它设计”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明父子组件通过隐式共享(如 Context)协作形成的声明式 API 及其优势。
从当前值的权威来源比较受控与非受控表单,说明实时联动、提交读取、外部重置和性能取舍,避免把非受控误解为没有状态,或认为受控模式一定更慢。
区分默认值与用户当前编辑值,说明异步数据回填、表单 reset、业务 key 重建与 ref 命令式赋值的选择,避免用随机 key 覆盖草稿或将 defaultValue 当成持续绑定。
说明文件选择与普通字符串输入的差异,通过 files 和 File 对象读取用户选择,区分文件路径、上传状态、清空选择及 accept 提示和服务端校验。
围绕“React 表单提交成功后,受控与非受控表单各自该如何重置”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须分别给出受控(重置 state)、非受控(form.reset 或 key 重挂载)及 React 19 action 自动重置的做。
围绕“React 表单里哪些值不应该放进 state,如何避免冗余状态导致的不一致”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出区分『源数据』与『渲染期可计算值』的判据并示范派生计算。
围绕“React 表单的校验应该在输入时、失焦时还是提交时触发,如何为不同字段选择时机”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按错误打扰程度与性能给出分字段的时机策略。
围绕“React 非受控表单在提交时如何一次性读取所有字段的值”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须示范 submit 事件中用 FormData 读取全部字段及其适用边界(动态数组、文件)。
区分编辑字符串、空值和合法业务数字,解释 Number 空字符串、valueAsNumber 与 NaN 的边界,并用完整 JSX 示例演示保留空输入、提交时校验与数值转换。
围绕“React 表单如何防止用户在请求未完成时重复提交”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须比较本地 pending state 禁用按钮与 React 19 的 useFormStatus 两种做法。
围绕“React 19 中 form 的 action 属性和传统 onSubmit 处理方式有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 action 函数自动接收 FormData、配合 useActionState 管理提交结果的新流程,需明确这是 React。
围绕“设计一个可复用的 React 表单字段组件时,props 接口应该怎么设计才好用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖完整回答要覆盖 label、错误信息、ref 转发与原生属性透传的接口设计。
解释原生 select multiple 的字符串数组 value、selectedOptions 与 FormData.getAll,说明选项删除、异步回填、空选择和选中顺序的业务边界。
用字段 name 与函数式对象更新组织通用处理器,说明 checkbox、number、select multiple 和 file 的读取差异,以及字段白名单、嵌套路径与表单状态拆分边界。
围绕“为什么 React 的 textarea 用 value 属性而不是子节点设初始内容,这和 HTML 有何不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 React 统一用 value/defaultValue 取代 HTML 的文本子节点写法及迁移注意点。
围绕“为什么 React 19 的 useFormStatus 必须写在 form 内部的子组件里才有效”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释它从最近的父 form 读取提交状态、与按钮组件复用的关系。
围绕“为什么自定义 React 输入组件通常遵循 value/onChange 的约定,这样做有什么好处”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明该约定让自定义组件可无缝替换原生控件并被统一表单逻辑接管。
围绕“React 中设计一个可被父组件共享其值的可复用组件时,受控与非受控两种模式的状态归属差别是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答清受控模式状态归父组件、非受控归组件内部,以及同一组件混用两种模式的冲突,不展开表单具体实现。
围绕“React 中一个多字段共享编辑状态的表单,选择每个字段一个 useState 还是整体一个对象 state 的判断”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出字段间是否有联动更新、是否整体提交替换这两条判断依据及嵌套过深的代价,不展开受控/非受控概念。
围绕“React 19 的 useOptimistic 在共享服务器数据的界面上如何实现乐观更新,提交失败时界面如何回退”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出乐观值仅在异步操作期间临时呈现、完成后回到真实状态这一生命周期,不展开 useActionState 的表单集成。
围绕“React 官方对共享状态的结构设计提出哪些原则,冗余和矛盾的状态会带来什么具体问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖完整回答要覆盖分组关联数据、消除冗余、避免矛盾、避免深层嵌套四原则及各自引发的同步 bug,不展开某个具体表单例子。
围绕“为什么把 React Server Action 传给 form 的 action 属性能做到 JavaScript”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明它退化为原生表单 POST 提交、有 JS 时升级为无刷新调用。
围绕“React 的 useActionState 如何配合 Server Action 管理表单提交的 pending ”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明它把 action 的返回值与提交中状态接入组件渲染。
解释服务端 HTML 不包含 React 函数闭包和客户端状态,说明 hydration 如何复用已有 DOM 并接管后续更新,同时区分原生链接、表单与 React 事件,以及直接重建 DOM 的代价。
围绕“如何利用 React 的 key 在不卸载整个页面的情况下重置某个组件的全部 state”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明改变 key 让 React 把其视为新实例并重建 state 树,并给出典型场景(如切换选中项时重置表单)。