React 中的 ForwardRef的使用

React 中的 forwardRef Hooks 是指将子组件的 Dom 节点暴露给给父组件,在 React 中如果想要访问 Dom 节点是通过 useRef 这个 hooks,而 forwardHook 在 useRef 做了扩展。useRef 是当前组件中间中的节点,而 forwardRef 相当于做了一层封装将父组件的一个 Ref 对象传到子组件中,如下例:

复制代码
#父组件中定义 Ref
const ref = useRef(null);

  function handleClick() {
    ref.current.focus();
  }

  return (
    <form>
      <MyInput label="Enter your name:" ref={ref} />
      <button type="button" onClick={handleClick}>
        Edit
      </button>
    </form>
  );
}

#封装子组件,传入 Ref参数
import { forwardRef } from 'react';

const MyInput = forwardRef(function MyInput(props, ref) {
  const { label, ...otherProps } = props;
  return (
    <label>
      {label}
      <input {...otherProps} ref={ref} />
    </label>
  );
});

export default MyInput;

forwardRef 源码中定义一个elementType 为 REACT_FORWARD_REF_TYPE reactElement。

总结

forwardRef 相当于是为 ref 传递的一种方式,普通的函数式组件就是 Render,而 fowardRef 多加了 Ref 参数。

相关推荐
走粥2 分钟前
JavaScript Promise
开发语言·前端·javascript
-CRzy2 分钟前
CTF之web-信息收集
前端
神算大模型APi--天枢6466 分钟前
合规落地加速期,大模型后端开发与部署的实战指南
大数据·前端·人工智能·架构·硬件架构
四瓣纸鹤8 分钟前
F2图表柱状图添加文本标注
前端·javascript·antv/f2
inferno10 分钟前
HTML基础(第二部分)
前端·html
Dreamcatcher_AC16 分钟前
Ajax技术:前后端交互全解析
前端·ajax
韭菜炒大葱23 分钟前
TailwindCSS:从“样式民工”到“UI乐高大师”的逆袭
前端·面试·编程语言
whyfail23 分钟前
CSS实现水滴样式
前端·css
C_心欲无痕24 分钟前
vue3 - watchEffect对响应式副作用进行管理
前端·javascript·vue.js
AAA阿giao30 分钟前
赋予大模型“记忆”:深度解析 LangChain 中 LLM 的上下文记忆实现
javascript·langchain·llm