React16.3中的Refs和Forwarding Refs

2023-11-07

简要介绍:React16.3中修改了Refs的使用方法,并且提供了Forwarding Refs用于在父组件中操作子组件中的dom节点,本文介绍一下新的Refs表示方法以及Forwarding Refs。

Ref的功能就不具体说了,就是在父组件中直接操作子组件的方法,Ref的方式,使其脱离了props传值,然后更新子组件的标准方法。

1 . React16.3中的Refs

(1)创建

16.3版本中Refs通过React.createRef()的方法创建,通过ref属性关联,比如我们创建一个Child子组件,并在该组件中使用Ref:

class Child extends React.Component{
   
  constructor(props){
    super(props);
    this.myRef=React.createRef();
    //React16.3中创建Ref的方法
  }
  render(){
    return <input ref={
  this.myRef}/>
  }
}

上述是创建Ref指向的方法,在Ref所指向的组件,在render后就可以调用,React16.3中提供了current属性,用于引用render后的节点:

  componentDidMount(){
    console.log(this.myRef.current);
    //render之后就可以输出该ref指向的那个节点
  }

此外,同样的Ref所指向的节点可以是dom节点,也可以是类组件。

(2)Ref属性指向的节点不能是函数组件

因为我们通过ref获得的组件,包含了声明周期和state,因此ref所指向的组件不可以是函数组件。

function MyFunctionComponent(){
  return <div>1</div>
}
class Child extends React.Component{
   
  constructor(props){
    super(props);
    this.myRef=React.createRef();
  }
  render(){
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React16.3中的Refs和Forwarding Refs 的相关文章

  • 对Fiber架构的理解?解决了什么问题?

    一 问题 JavaScript引擎和页面渲染引擎两个线程是互斥的 当其中一个线程执行时 另一个线程只能挂起等待 如果 JavaScript 线程长时间地占用了主线程 那么渲染层面的更新就不得不长时间地等待 界面长时间不更新 会导致页面响应度
  • React仿写网易云音乐项目

    文章目录 一 项目功能说明 二 最终效果 三 文件目录结构说明 四 项目技术栈 五 核心技术 1 配置项目别名 craco craco 2 使用reset css进行 css 重置 3 使用CSS Sprites 精灵图 4 使用 memo
  • React 初识之Umi项目搭建实战

    一 创建项目 创建之前需要安装 Node js 和 npm yarn 这俩个环境 在WebStorm里面创建一个项目 输入命令 yarn create umi 弹出选项 这里我们选择第二项APP 选择是否使用typescript 这里选no
  • 对 React Hook的闭包陷阱的理解,有哪些解决方案?

    hooks中 奇怪 其实符合逻辑 的 闭包陷阱 的场景 同时 在许多 react hooks 的文章里 也能看到 useRef 的身影 那么为什么使用 useRef 又能摆脱 这个 闭包陷阱 搞清楚这些问题 将能较大的提升对 react h
  • react 使用 scss

    react 使用 scss 日常记录开发中遇到的坑 1 使用 npm install sass loader node sass S 进行安装 2 在页面中直接使用 有时候可以 有时候不行 原因 我个人觉得安装的两个插件本版兼容问题 nod
  • Ant Design Pro 从零到一教程

    说在最前面的话 可是能全网唯一适合小白的antd教程 因为我找了接近一个周的教程 无论是视频 博客等等都没有比较完整的教程 所以才说这可能是唯一全网适合小白教程 文章末有相关学习链接 适用人群 喜欢看文字或者代码学习的人 学习的人掌握基本的
  • React页面设计初体验

    1 定制路由 export default login path login name login component layouts BlankLayout routes path login component Login Index
  • 组件间样式覆盖问题--CSS Modules

    1 组件间样式覆盖问题 问题 CityList 组件的样式 会影响 Map 组件的样式 原因 在配置路由时 CityList 和 Map 组件都被导入到项目中 那么组件的样式也就被导入到项目中了 如果组件之间样式名称相同 那么一个组件中的样
  • react组件状态同步-状态提升

    假设定义组件TemperatureInputSon import React from react class TemperatureInputSon extends React Component constructor props su
  • React中使用if else 条件判断

    在react中用jsx渲染dom的时候经常会遇到if条件判断 然而在jsx中竟是不允许if条件判断的 以下有几种判断方式 可以根据自己的应用场景 挑选适合的 方案一 class HelloMessage extends React Comp
  • hook中使用ref使用

    对于antd的fom表单 hook使用ref import React useState useEffect useRef from react const dateRef useRef dateRef current setFieldsV
  • React(一):React的设计哲学 - 简单之美

    React 一 React的设计哲学 简单之美 React 二 React开发神器Webpack React 三 理解JSX和组件 React 四 虚拟DOM Diff算法解析 React 五 使用Flux搭建React应用程序架构 Rea
  • umi 后台管理demo

    umi 后台管理demo umi react ts dva antd egg 有待优化 简单的前后端管理demo 接口提供增删查改 前端也有相应功能 github代码 https github com huiBuiling ql admin
  • react 父组件调用子组件的方法

    子组件中 const child forwardRef props ref gt useImperativeHandle ref gt 这里面的方法是暴露给父组件的 test console log 我是组件里的test方法 test2 t
  • 值得收藏的UmiJS 教程

    点击上方关注 前端技术江湖 一起学习 天天进步 前言 网上的umi教程是真的少 很多人都只写了一点点 很多水文 所以打算自己写一篇 自己搭建umi 并封装了一下常用的功能 并用到公司实际项目中 umi介绍 Umi 是什么 Umi 中文可发音
  • vue发展历史简介

    基本介绍 Vue 是一套用于构建用户界面的 渐进式框架 与其它大型框架不同的是 Vue 被设计为可以自底向上逐层应用 最初它不过是个人项目 时至今日 已成为全世界三大前端框架之一 github 上拥有 17 8万 Star 领先于 Reac
  • 如何替换对象的key值

    发生的场景 现在用antd组件库 有些组件想渲染数据的话 我要根据他们官网给的字段名称对应起来才能渲染上去 这个是复选框选中 保存的时候 字段需要按照后台约定的传入code value 1 常规循环遍历 大招来了 哈哈哈 才疏学浅 我觉得是
  • error Missing “key“ prop for element in array react/jsx-key

    react遇到一个奇怪的问题 error Missing key prop for element in array react jsx key 检查了jsx中使用map的 都定义了key div otherList map item an
  • reactJS 干货(reactjs 史上最详细的解析干货)

    一 State和 Props state是状态机 应该包括 那些可能被组件的事件处理器改变并触发用户界面更新的数据 譬如需要对用户输入 服务器请求或者时间变化等作出响应 不应该包括 计算所得数据 React组件 在render 里使用pro
  • React 中 ref 的不良做法是什么?

    我正在学习 React 不同网站的一些人告诉大家 使用 refs 是一种不好的做法 是的 完全使用它们 真正的问题是什么 我将其附加到子组件 以便我可以访问内部内容 是不是有什么不好 Thanks React 需要你思考反应方式 https

随机推荐

  • C/C++代码缺陷静态检查工具cppcheck

    cppcheck介绍和安装 CppCheck是一个C C 代码缺陷静态检查工具 静态代码检查是检查代码是否安全和健壮 是否有隐藏问题 CppCheck只检查编译器检查不出来的bug 不检查语法错误 CentOS在线安装命令 yum inst
  • JVM初探:内存分配、GC原理与垃圾收集器

    http www importnew com 23035 html
  • MATLAB实现多元线性回归预测

    一 简单的多元线性回归 data txt 1 230 1 37 8 69 2 22 1 2 44 5 39 3 45 1 10 4 3 17 2 45 9 69 3 9 3 4 151 5 41 3 58 5 18 5 5 180 8 10
  • linux 下的 iptables/ netfilter 防火墙 深度理解 后篇

    一 概述 中篇已经提到了钩子函数的注册 也知道最终数据进来是通过钩子函数处理 来实现防火墙的功能的 那么netfilter 内核是在什么时候调用钩子函数 钩子函数又是怎么实现防火墙对应的功能的 本章主要讲钩子函数实现的过滤功能 二 调用钩子
  • 门控时钟电路(Intergrated clock gating)

    门控时钟 某些模块不需要工作的时候 为了降低功耗 需要关闭该模块的时钟 节省触发器的翻转功耗 采用门控时钟电路来控制时钟的关断 本文大量引用了知乎门控时钟的图片和一些文字描述 简单的与门 最初的思路是采用一个使能信号en和一个与门来控制时钟
  • 恒玄BES调试笔记

    基于恒玄平台开发TWS耳机 常用的有BES2300系列 BES2500系列 以及即将开发的BES2600 其实都差不多 本笔记基于恒玄BES2500YA芯片给某大客户开发TWS耳机 是项目开发过程的一些笔记 由于博主精力有限 不喜欢长篇大论
  • 以太网是什么拓扑结构

    以太网采用的拓扑结构是总线型拓扑 以太网是一种计算机局域网技术 目前的快速以太网为了减少冲突 将能提高的网络速度和使用效率最大化 使用交换机来进行网络连接和组织 以太网是一种计算机局域网技术 IEEE组织的IEEE 802 3标准制定了以太
  • Html select标签

    Select 创建 Form 事件 属性 选中 创建 直接撸代码
  • PageHelper分页+排序

    PageHelper分页 排序 使用pageHelper插件来分页 只需在执行sql前用即可 String orderBy 排序字段 desc 按照 数据库 排序字段 倒序 排序 PageHelper startPage pageNum p
  • 二级缓存j2cache和SpringBoot整合

    简介 j2cache是开源的二级缓存库 支持实现 本地缓存Ehcache Caffeine 远程缓存Redis Memcached 常见解决方案 如一级缓存使用Ehcache 二级缓存使用Redis 上篇描述的阿里开源的jetcache 是
  • javascript读写本地sqlite数据库

    sqlite这种单文件数据库 类型简单功能强大效率也不错 非常适合单机软件开发 把一个我以前写的JavaScript sqlite数据库操作类分享给大家 还是先上代码 注释写的很清楚啦 支持增删改查 支持链式查询 使用的时候不用new sq
  • 【智能控制实验】MATLAB代码编译环境与MATLAB命令设计模糊控制器

    MATLAB代码编译环境与MATLAB命令设计模糊控制器 一 实验要求 重点学习MATLAB系统仿真软件的使用和模糊控制器工作原理 并应用MATLAB命令进行模糊控制器设计 完成模糊控制查询表的实现 模糊控制在线运行代码的实现 已知 1 1
  • vue3.2+ts错误:找不到模块“./App.vue”或其相应的类型声明。ts(2307)

    vue3 2 ts错误 找不到模块 App vue 或其相应的类型声明 ts 2307 解决方法 在项目根目录创建 env d ts 文件 如果已有 则在文件中追加 加入以下内容 declare module vue import type
  • C++STL之vector容器

    1 Vector容器的插入 1 1 简单使用vector容器的插入方法 vector的插入不难 一般我们在使用时都是使用push back插入 当使用下标法时在不指定vec大小很容易越界 编译器不会开辟默认容量 我记得以前的好像会默认开辟2
  • 数据仓库与数据湖的区别

    数据湖通常包含用于高级分析应用程序的各种大数据集 而数据仓库则存储用于基本 BI 分析和报告用途的传统事务数据 下面 让我们更仔细地看一下这两个数据存储以及它们之间的差异 1 什么是数据湖 数据湖通常是一个庞大的存储库 以本机格式存储原始数
  • Go语言面试题汇总

    正在准备golang面试的小伙伴 很荣幸 你能看到这篇文章 希望每一个看到这篇分享的小伙伴都能找到自己称心如意的工作 1 说说go语言的main函数 1 main函数不能带参数 2 main函数不能定义返回值 3 main函数所在的包必须为
  • Vue2 + ElementUI 关于$emit用法总结

    数据传递总结 父组件可以使用 props 把数据传给子组件 子组件可以使用 emit 触发父组件的自定义事件 实战 封住客户等级功能的通用表单 支持新增和编辑 定义封住子组件 levelCommon vue
  • 一行命令即可启动 Walrus丨入门教程

    今日 应用管理平台 Walrus 已正式开源 本文将介绍如何上手安装 Walrus 以及如何借助 Walrus 进行应用部署 开源地址 https github com seal io walrus 部署 Walrus 首先 您需要准备 资
  • Sublime Text 3 安装PackageControl

    操作步骤 1 复制安装信息 import urllib request os hashlib h 6f4c264a24d933ce70df5dedcf1dcaee ebe013ee18cced0ef93d5f746d80ef60 pf Pa
  • React16.3中的Refs和Forwarding Refs

    简要介绍 React16 3中修改了Refs的使用方法 并且提供了Forwarding Refs用于在父组件中操作子组件中的dom节点 本文介绍一下新的Refs表示方法以及Forwarding Refs Ref的功能就不具体说了 就是在父组