action 适合处理哪些类型的数据变更操作?与 loader 区别在哪?
围绕“action 适合处理哪些类型的数据变更操作?与 loader 区别在哪”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 action 用于写操作(如创建/更新),loader 用于读操作,不能混淆副作用。
流处理专题面试题第 3 页,显示第 101–150 题,共找到 177 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“action 适合处理哪些类型的数据变更操作?与 loader 区别在哪”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 action 用于写操作(如创建/更新),loader 用于读操作,不能混淆副作用。
围绕“action 中如何检查用户权限?是否可以在 action 内部拒绝请求并返回错误”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明可在 action 内判断权限并抛出错误,不能仅靠前端路由守卫。
围绕“action 中如何阻止表单默认提交行为?是否需要显式取消”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 action 默认阻止,无需额外操作,不能误解为需 preventDefault。
围绕“action 返回不同的响应类型(如 redirect、json、null)时,对导航行为有何不同影响”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分 redirect 触发跳转,json 用于客户端解析,null 保持当前页,不能混为一谈。
围绕“action 中执行服务器端表单验证失败后,如何向客户端返回具体错误信息并保持表单状态”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明通过返回 { error: '...' } 并保留原始表单数据,不能只提 useActionData。
围绕“action 执行过程中,如何持久化用户会话状态以便后续页面使用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明通过 setCookie、localStorage、sessionStorage 保存,不能依赖内存变量。
围绕“嵌套路由中,父路由的 loader 与子路由的 loader 之间如何传递数据?是否共享状态”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释 nested route loader 之间的数据依赖关系与独立性,不能混淆为组件状态或 context 传递。
围绕“如何在 React Router v7 中自定义 error boundary 的样式与交互行为”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明通过 render custom component in error boundary,不能仅改 CSS。
围绕“React Router 里的 error boundary 在组件卸载后还能正常工作吗?其生命周期如何”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 error boundary 在整个路由树内有效,即使组件已卸载,不能认为失效。
围绕“React Router 中 loader 与 action 如何协同处理数据加载和表单提交的错误边界”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 loader/action 的错误如何被 error boundary 捕获并渲染,不能仅描述错误类型或通用异常处理。
围绕“React Router v7 中,如何实现 loader 的数据缓存以减少重复请求”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明通过自定义 cache key + Context API 手动管理,不能依赖框架内置缓存。
围绕“能否根据特定条件(如用户权限变化)手动触发 loader 的重验证?如何实现”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明通过 reload() 函数主动调用,不能通过修改 URL 伪造条件。
围绕“loader 返回的数据是否可以直接用于视图?若需转换,应在何处进行”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明应在组件内部转换,不能在 loader 内预处理,避免污染数据结构。
围绕“首次加载页面时,loader 如何获取初始数据?是否会在组件挂载前运行”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 loader 在组件挂载前执行,且不依赖用户交互,不能误以为是事件驱动。
围绕“loader 能否只返回部分数据?如何在路由层级中实现渐进式加载”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 loader 必须返回完整对象,不能拆分返回,需通过组件控制展示。
围绕“在 React Router v7 里,loader 的重验证(revalidation)策略如何影响数据更新时机”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 load、reload、refetch 等触发机制与默认行为差异,不能泛化为‘自动更新’。
围绕“loader 使用 async/await 时,为何必须配合 Suspense?其作用机制是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 Suspense 用于等待异步数据,否则页面会冻结,不能仅提“防止白屏”。
围绕“loader 请求超时该如何处理?是否有内置超时机制”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明无内置超时,需手动封装 fetch + timeout 控制,不能依赖框架。
围绕“在使用 React Router 时,如何保证用户在刷新页面后仍能恢复之前的导航状态”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明通过 loader / action 保存状态到 URL 或 localStorage,不能依赖浏览器历史栈。
围绕“嵌套路由中,子路由组件如何安全地访问父路由 loader 返回的数据”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明通过 useLoaderData() 仅能访问自己对应 loader,不能直接访问父级数据。
围绕“嵌套路由中,一个子路由的错误是否会影响其他兄弟路由的正常加载”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明错误仅影响自身及祖先,兄弟路由不受影响,不能认为是全局崩溃。
围绕“嵌套路由中,子路由的 loader 报错时,错误是否会影响父路由的 UI 渲染”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明错误会向上冒泡至最近的 error boundary,不影响父级 loader 执行结果。
围绕“嵌套路由中,多个子路由的 loader 能否并行执行?如何控制其加载顺序”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明所有子路由 loader 会并发执行,不能通过顺序写入改变加载顺序。
围绕“为什么 React 流式 SSR 需要设置超时并调用 abort 终止渲染,终止后页面会变成什么样”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明挂起过久的数据应放弃服务端渲染、剩余部分交给客户端渲染。
围绕“React 组件在服务端渲染时没有 window 和 document,如何安全地编写依赖浏览器 API 的代码”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出 useEffect 延迟执行、按环境条件分支、客户端专属组件等可行路径。
围绕“React 的 cache() 函数在服务端组件渲染中起什么作用,为什么组件树里多处 fetch 同一数据不会重复请”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 cache 按单次渲染对相同参数的调用去重且跨组件生效。
围绕“在 React Server Components 中如何把客户端交互组件嵌入以服务端为主的组件树而不扩大客户端边界”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明通过 children/slot 把服务端渲染结果传入客户端组件、避免把整棵子树划入客户端包。
按照请求、HTML、JavaScript、数据和交互接管的顺序比较 React CSR 与 SSR,区分首屏可见和可交互,说明流式输出、静态生成以及后续客户端导航对流程的影响。
围绕“React 流式 SSR 中某个 Suspense 边界在服务端抛错时,Error Boundary 如何影响最终页”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明服务端将该边界降级为客户端渲染、由客户端的 Error Boundary 或重试接管。
根据根容器是否已有对应 SSR HTML 选择 hydrateRoot 或 createRoot,说明两种 API 的启动方式、后续更新与卸载,并明确 React 18 弃用及 React 19 移除旧 render、hydrate 的版本边界。
按初始数据、时间随机性、浏览器环境、无效 HTML 和外部 DOM 修改分类排查 hydration mismatch,用共享时间标签示例说明确定性初始输入,并区分首次接管与之后正常更新。
区分 hydration 属性差异与无法继续接管的错误,解释 Suspense 边界内恢复和根级回退的范围,说明已有首屏不会被追溯取消,以及 DOM 重建、输入状态和错误监控的实际代价。
围绕“React 应用 hydration 阶段的主要性能开销来自哪里,有哪些降低成本的思路”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须指出执行整树 JS 与重建虚拟 DOM 的成本,并给出缩减 JS 体积、局部 hydration 等方向。
围绕“React.lazy 包裹的组件在流式 SSR 中如何与 Suspense 配合,为什么这让代码分包能在服务端生效”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 lazy 组件在服务端挂起并触发 fallback、客户端按边界分段加载与 hydration。
围绕“React 中多个嵌套或兄弟 Suspense 边界在流式 SSR 中的内容揭示顺序由什么决定”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明各边界独立完成、父边界 fallback 会覆盖未就绪子边界。
围绕“React 19 中在组件树任意位置渲染 title、meta、link 标签会发生什么,这对 SSR 有什么意义”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明这些标签会被自动提升到 document head,简化了 SSR 下各页面元数据管理。
围绕“React 19 的 prerender(react-dom/static)与 renderToString 有何不”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 prerender 会等待全部 Suspense 数据就绪后再输出完整静态 HTML。
围绕“在 Node.js 中如何用 React 的 renderToPipeableStream 实现流式 SSR,它的关”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讲清 render 调用时机与 pipe 的输出方式,回调对比题留给 shell-ready 与 all-ready 单独讨论。
围绕“在边缘运行时(Web Streams 环境)中 React 流式 SSR 应使用哪个 API,它与 Node 版本有”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须指出 renderToReadableStream 返回 Web ReadableStream、适用于 Deno/边缘函数等环境。
围绕“React 的 renderToStaticMarkup 与 renderToString 输出有何区别,各自适合什”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须指出 static 版本不含 data-reactroot 等 hydration 标记、适合邮件等纯静态内容。
围绕“React 的 renderToString 是如何工作的,为什么说它不适合需要流式传输的场景”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明它同步生成完整 HTML 字符串、不支持 Suspense 流式。
围绕“在 Node 服务端选择 renderToString 还是 renderToPipeableStream,判断依据”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须依据是否需要 Suspense 流式输出与更快首字节来做选择。
围绕“React Server Components 的客户端边界划分如何影响最终发往浏览器的 JavaScript 包体”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明服务端组件及其依赖不进入客户端 bundle、边界位置决定拆包形状。
围绕“为什么 React 服务端组件不能使用 useState、useEffect 和浏览器事件,这种限制换来什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明服务端组件不 hydration、不常驻内存因此无交互生命周期,换来零客户端 JS 与直接访问后端资源。
围绕“React Server Components 渲染出的 RSC payload 是什么形态,客户端如何消费它”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明它是可流式传输的序列化指令流而非 HTML、客户端据此重建组件树。
围绕“React Server Components(RSC)与传统 SSR 是同一回事吗,两者在渲染管线中分别负责什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 RSC 是组件类型的划分、SSR 是首屏 HTML 生成手段且两者可叠加使用。
围绕“React 18 的选择性 hydration(selective hydration)是什么,它如何响应用户的早期”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明按 Suspense 边界分段 hydration 且用户交互的边界会被优先处理。
围绕“为什么从 React 服务端组件传给客户端组件的 props 必须是可序列化的,传函数会怎样”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明跨越网络边界的 props 要走序列化通道、函数与类实例不可传递。
围绕“React 的 'use server' 与 Server Functions 解决了什么问题,客户端调用它们时实际”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明客户端调用被框架转为对服务端的请求并返回 Promise。
围绕“renderToPipeableStream 的 onShellReady 与 onAllReady 分别在什么时机”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分外壳就绪与全部 Suspense 完成两个时点,并给出按访客类型(人 vs 爬虫)选择的判断。