forwardRef和useImperativeHandle 搭配使用可以使在使用ref时自定义暴露一些自定义的实例值给父组件,例如这里的focus
方法
function FancyInput(props, ref) {
const inputRef = useRef();
useImperativeHandle(ref, () => ({
focus: () => {
inputRef.current.focus();
}
}));
return <input ref={inputRef} ... />;
}
FancyInput = forwardRef(FancyInput);
渲染 <FancyInput ref={inputRef} > 的父组件可以调用 inputRef.current.focus()