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 参数。

相关推荐
昕er1 分钟前
CefSharp 文件下载和保存功能-监听前端事件
前端
@PHARAOH7 分钟前
WHAT - Tree Shaking 的前提是 ES Module
前端·webpack·ecmascript
鱼樱前端13 分钟前
📚 Vue Router 4 核心知识点(Vue3技术栈)面试指南
前端·javascript·vue.js
食指Shaye19 分钟前
Chrome 中清理缓存的方法
前端·chrome·缓存
JobsandCzj21 分钟前
PDF 分割工具
javascript·小程序·pdf
午后书香30 分钟前
一天三场面试,口干舌燥要晕倒(二)
前端·javascript·面试
Book_熬夜!1 小时前
CSS—补充:CSS计数器、单位、@media媒体查询
前端·css·html·媒体
程序员大澈1 小时前
1个基于 Three.js 的 Vue3 组件库
javascript·vue.js
程序员大澈1 小时前
3个 Vue Scoped 的核心原理
javascript·vue.js
hyyyyy!1 小时前
《原型链的故事:JavaScript 对象模型的秘密》
javascript·原型模式