

新闻资讯
技术学院在 react 中,ref 回调函数(如 `ref={el => {...}}`)会在 dom 元素挂载时传入真实节点,卸载时传入 `null`,这是 react 内置的生命周期行为,用于确保 ref 始终准确反映 dom 状态。
当你使用函数式 ref(即 ref={el => inputsRef.current[i] = el})时,React 会在两个关键时机调用该回调:
这就是为什么 el 类型为 HTMLInputElement | null —— TypeScript 正确地反映了这一双向生命周期语义。
export default function SomeArray() {
const inputsRef = useRef([]);
return (
<>
{[1, 2, 3].map((_, i) => (
{
if (el) {
// 挂载:安全赋值
inputsRef.current[i] = el;
} else {
// 卸载:清理引用,防止内存泄漏或 stale node
inputsRef.current[i] = null;
}
}}
/>
))}
>
);
}
useEffect)中;简言之,null 不是类型缺陷,而是 React 精确控制 DOM 生命周期的契约体现——尊重它,才能写出健壮、可预测的 ref 管理逻辑。