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

相关推荐
敲啊敲95272 分钟前
uni-app之旅-day02-分类页面
前端·javascript·uni-app
汪子熙12 分钟前
Angular 客户端渲染时,从 ng-state 里读取 SSR 状态的具体逻辑
前端·javascript·angular.js
谢尔登1 小时前
【移动端】Viewport 视口
前端·javascript·html
哇咔咔哇咔1 小时前
【科普】什么是npm和pip?它们之间有什么异同?
前端·npm·pip
二十雨辰1 小时前
[uni-app]小兔鲜-06地址+sku+购物车
前端·javascript·vue.js·uni-app
码农0001 小时前
Vue2 + ElementUI + axios + VueRouter入门
前端·javascript·elementui
吕永强2 小时前
CSS概述
前端·css·css3
古韵2 小时前
用alovajs的use-fetcher,轻松搞定数据请求难题
前端·javascript·axios
秃头女孩y2 小时前
React基础-快速梳理
前端·react.js·前端框架
DT——2 小时前
vue中如何实现组件通信
前端·javascript·vue.js