forwardRef 和 useImperativeHandle 有什么用?

默认函数组件不能接收 ref(React 把 ref 当特殊属性)。

const Input = forwardRef((props, ref) => {
  const inner = useRef()
  useImperativeHandle(ref, () => ({
    focus: () => inner.current.focus(),
    clear: () => (inner.current.value = '')
  }))
  return <input ref={inner} />
})

父组件 <Input ref={r} /> 只能调用 r.current.focus()/clear(),拿不到原始 DOM 的全部能力。React 19 引入 ref 作为普通 prop,forwardRef 将逐渐被取代。

同分类其他题目