React 回调 ref 适合什么场景,条件 DOM 出现后为什么不一定需要 Effect?
用条件输入框解释回调 ref 如何跟随节点连接与移除,比较对象 ref 与挂载 Effect,说明回调身份、动态节点和清理边界。
React · Hooks 与复用面试题第 1 页,显示第 1–37 题,共找到 37 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
用条件输入框解释回调 ref 如何跟随节点连接与移除,比较对象 ref 与挂载 Effect,说明回调身份、动态节点和清理边界。
用 useReducer 加 Context 复用状态逻辑时,为什么常把 state 和 dispatch 拆成两个 Context? 本文先给出可直接复述的结论,再用最小代码说明React Context 拆分 state dispatch 性能 复用的工作方式、判断依据、项目边界和常见误区。
自定义 Hook 内部注册的事件监听或定时器,清理责任应该由谁承担? 本文先给出可直接复述的结论,再用最小代码说明React 自定义 Hook 清理函数 责任的工作方式、判断依据、项目边界和常见误区。
把 useEffect 逻辑抽进自定义 Hook 后,Hook 参数变化时如何保证 effect 正确重新执行? 本文先给出可直接复述的结论,再用最小代码说明React 自定义 Hook 依赖穿透 effect 参数的工作方式、判断依据、项目边界和常见误区。
为什么 React 自定义 Hook 的函数名必须以 use 开头? 本文先给出可直接复述的结论,再用最小代码说明React 自定义 Hook 命名 use 开头 原因的工作方式、判断依据、项目边界和常见误区。
设计自定义 Hook 的返回值时,应该返回数组元组还是对象? 本文先给出可直接复述的结论,再用最小代码说明React 自定义 Hook 返回值 数组 对象的工作方式、判断依据、项目边界和常见误区。
自定义 Hook 返回的回调函数在每次渲染都变新引用,导致调用方 effect 反复执行,该如何处理? 本文先给出可直接复述的结论,再用最小代码说明React 自定义 Hook useCallback 返回函数 稳定引用的工作方式、判断依据、项目边界和常见误区。
两个组件同时调用同一个自定义 Hook,它们内部的状态会互相共享吗? 本文先给出可直接复述的结论,再用最小代码说明React 自定义 Hook 状态共享 独立的工作方式、判断依据、项目边界和常见误区。
复用一段包含状态与副作用的逻辑时,应该抽成自定义 Hook 还是抽成组件? 本文先给出可直接复述的结论,再用最小代码说明React 自定义 Hook 组件 复用 取舍的工作方式、判断依据、项目边界和常见误区。
React 的自定义 Hook 与普通的 JavaScript 工具函数有什么本质区别? 本文先给出可直接复述的结论,再用最小代码说明React 自定义 Hook 工具函数 区别的工作方式、判断依据、项目边界和常见误区。
只想响应某个交互而不因读取最新 state 让整个 useEffect 反复重跑,React 提供了什么思路? 本文先给出可直接复述的结论,再用最小代码说明React Effect Event useEffectEvent 实验性的工作方式、判断依据、项目边界和常见误区。
在 React useEffect 里启动的定时器总是读到旧的 state,这是为什么,有哪些修复方式? 本文先给出可直接复述的结论,再用最小代码说明React useEffect 定时器 读到旧 state 修复的工作方式、判断依据、项目边界和常见误区。
在 React 的 useEffect 中订阅聊天服务或 WebSocket 时,为什么清理函数必不可少? 本文先给出可直接复述的结论,再用最小代码说明React useEffect 订阅 清理函数 重复连接的工作方式、判断依据、项目边界和常见误区。
说明 rules-of-hooks 与 exhaustive-deps 分别检查什么,给出 ESLint 9 的基础 flat config,区分插件推荐预设中的额外诊断,并介绍条件 Hook、遗漏依赖和自定义 Effect Hook 的修复思路。
一段响应式逻辑应该写在 React 事件处理函数里还是 useEffect 里,判断标准是什么? 本文先给出可直接复述的结论,再用最小代码说明React 事件处理 useEffect 如何选择的工作方式、判断依据、项目边界和常见误区。
在 React 18 中,如何把函数组件内部的 DOM 节点暴露给父组件调用 focus 等方法? 本文先给出可直接复述的结论,再用最小代码说明React forwardRef 父组件 访问子组件 DOM的工作方式、判断依据、项目边界和常见误区。
设计 useReducer 的 action 时,计算结果应该放进 payload 还是交给 reducer 自己算? 本文先给出可直接复述的结论,再用最小代码说明React reducer action payload 设计的工作方式、判断依据、项目边界和常见误区。
为什么 React 的 reducer 必须是纯函数,不能在里面发请求、写 ref 或调用定时器? 本文先给出可直接复述的结论,再用最小代码说明React reducer 纯函数 副作用 原因的工作方式、判断依据、项目边界和常见误区。
React 19 中函数组件接收 ref 的方式发生了什么变化,与 forwardRef 有何差异? 本文先给出可直接复述的结论,再用最小代码说明React 19 ref as prop forwardRef 变化的工作方式、判断依据、项目边界和常见误区。
用 DOM 原生事件订阅解释 React 19 ref cleanup 的资源配对,说明节点移除、回调身份变化、Strict Mode 检查及旧版 null 清理的迁移。
区分渲染阶段的可变引用读写与可预测初始化,用点击缓存示例说明事件读写、state 展示和跨渲染容器,并解释资源创建的限制。
把 ref.current 当作 useEffect 的依赖,或者直接在 JSX 中渲染 ref.current,会有什么问题? 本文先给出可直接复述的结论,再用最小代码说明React ref 非响应式 effect 依赖 ref.current的工作方式、判断依据、项目边界和常见误区。
通过状态变化记录器解释 ref 保存的历史究竟属于哪个阶段,避免在 render 中读写可变历史,说明首次值、相同值、批处理和可见历史状态的设计。
React 中 useRef 和 useState 都能跨渲染保存数据,二者的本质区别和适用场景是什么? 本文先给出可直接复述的结论,再用最小代码说明React useRef 和 useState 区别的工作方式、判断依据、项目边界和常见误区。
为什么 React 的 Hooks 必须在每次渲染中以完全相同的顺序调用,不能放进条件或循环里? 本文先给出可直接复述的结论,再用最小代码说明React Hooks 为什么不能条件调用的工作方式、判断依据、项目边界和常见误区。
React 18 的 Strict Mode 下 useEffect 在开发环境为什么会执行两次,怎样写才是安全的? 本文先给出可直接复述的结论,再用最小代码说明React 18 Strict Mode useEffect 执行两次的工作方式、判断依据、项目边界和常见误区。
React 的 useImperativeHandle 适合在什么情况下用来约束父组件对子组件的访问? 本文先给出可直接复述的结论,再用最小代码说明React useImperativeHandle 暴露 命令式 API的工作方式、判断依据、项目边界和常见误区。
React 的 useLayoutEffect 与 useEffect 执行时机有什么差异,这决定了怎样的使用边界? 本文先给出可直接复述的结论,再用最小代码说明React useLayoutEffect useEffect 时机 闪烁的工作方式、判断依据、项目边界和常见误区。
React 的 useMemo 能解决哪两类问题,为什么不能把它当作结果一定会被缓存的语义保证? 本文先给出可直接复述的结论,再用最小代码说明React useMemo 用途 缓存 语义保证的工作方式、判断依据、项目边界和常见误区。
useReducer 配合 Context 能否替代 Redux 做全局状态管理,适用边界在哪里? 本文先给出可直接复述的结论,再用最小代码说明React useReducer Context Redux 替代 边界的工作方式、判断依据、项目边界和常见误区。
useReducer 返回的 dispatch 函数身份稳定吗,写进 useEffect 依赖数组时能否省略? 本文先给出可直接复述的结论,再用最小代码说明React useReducer dispatch 稳定 依赖数组的工作方式、判断依据、项目边界和常见误区。
useReducer 的第三个参数 init 函数有什么作用? 本文先给出可直接复述的结论,再用最小代码说明React useReducer init 惰性初始化 第三个参数的工作方式、判断依据、项目边界和常见误区。
什么时候应该把 React 组件里的 useState 重构为 useReducer? 本文先给出可直接复述的结论,再用最小代码说明React useReducer useState 何时重构的工作方式、判断依据、项目边界和常见误区。
什么情况下必须使用 React setState 的函数式更新形式而不是直接传新值? 本文先给出可直接复述的结论,再用最小代码说明React setState 函数式更新 updater的工作方式、判断依据、项目边界和常见误区。
给 React 的 useState 传一个函数和直接传初始值有什么区别? 本文先给出可直接复述的结论,再用最小代码说明React useState 惰性初始化 函数参数的工作方式、判断依据、项目边界和常见误区。
为什么 useSyncExternalStore 的 getSnapshot 必须返回缓存的值,而不能每次新建一个对象? 本文先给出可直接复述的结论,再用最小代码说明React useSyncExternalStore getSnapshot 缓存 无限循环的工作方式、判断依据、项目边界和常见误区。
React 的 useSyncExternalStore 是为解决什么问题而设计的? 本文先给出可直接复述的结论,再用最小代码说明React useSyncExternalStore tearing 并发的工作方式、判断依据、项目边界和常见误区。