iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >详解Ref在React中的交叉用法
  • 304
分享到

详解Ref在React中的交叉用法

2024-04-02 19:04:59 304人浏览 独家记忆
摘要

目录一、首先说明下什么是Ref二、ref在hooks中的用法1、ref在hooks中htmlDom的用法2、ref在hooks中与函数式组件的用法3、ref在hooks中与类组件一同

一、首先说明下什么是Ref

Ref 转发是一项将 ref 自动地通过组件传递到其一子组件的技巧。对于大多数应用中的组件来说,这通常不是必需的。但其对某些组件,尤其是可重用的组件库是很有用的

Ref官网说明:点击这里

二、ref在hooks中的用法

1、ref在hooks中HTMLDom的用法

这里就如官网一样正常使用即可,官网例子:这里


const Fn = ()=>{
    const testRef = useRef(null);
    console.log('testRef',testRef.current); // 会渲染两次,第一次打印null,第二次是<div>测试</div>
    return (
        <div ref={testRef}>测试</div>
    )
}

2、ref在hooks中与函数式组件的用法

这里只需要将ref属性透传到函数式组件中即可


const Fn = ()=>{
    const testRef = useRef(null);
    // 定义Test函数组件
    const Test = ({ refs }) => <div ref={refs}>我是ReactDOM test</div>;
    console.log('testRef',testRef.current); // 会渲染两次,第一次打印null,第二次是<div>我是ReactDOM test</div>
    return (
        {}
         <Test refs={testRef} /> 
    )
}

3、ref在hooks中与类组件一同使用

这里仅需要在类组件的回调ref中手动赋值给useRef对象即可,更多回调ref:这里


import ReactDom from 'react-dom';

const Fn = ()=>{
    const testClassRef = useRef(null);
    // 定义TestClass类组件
    class TestClass extends React.Component {
        render() {
          return (
            <div >
                我是TestClass类组件 测试
            </div>
          )
        }
    }
    console.log('testClassRef',testClassRef.current); // 会渲染两次,第一次打印null,第二次是<div>我是TestClass类组件 测试</div>
    return (
        {}
         <TestClass 
             ref={el => {
                console.log('new render refs')
                testClassRef.current = ReactDom.findDOMnode(el);
             }} 
         /> 
    )
}

4、ref在hooks中与class、react-redux一同使用

当遇到connect包裹的类组件时,因为最外层已经被包裹成了react-redux的Provider,所以需要将ref属性透传如真正React组件中,这个时候需要关注下connect的forwardRef属性


import ReactDom from 'react-dom';
import { connect } from 'react-redux';

const Fn = ()=>{
    const testClassRef = useRef(null);
    // 定义TestClass类组件
    class TestClass extends React.Component {
        render() {
          return (
            <div >
                我是TestClass类组件 测试
            </div>
          )
        }
    }
    //定义TestClass的connect包裹后的组件
    //forwardRef:true 设置redux允许将ref作为props传入到connect包裹的组件中
    const TestClassConnect = connect(null, null, null, { forwardRef: true })(TestClass);
    
    console.log('testClassRef',testClassRef.current); // 会渲染两次,第一次打印null,第二次是<div>我是TestClass类组件 测试</div>
    return (
        {}
         <TestClassConnect
            ref={el => {
              console.log('new render refs')
              testClassRef.current = ReactDom.findDOMNode(el);
            }}
          />
    )
}

以上就是详解Ref在React中的交叉用法的详细内容,更多关于Ref在React中的交叉用法的资料请关注编程网其它相关文章!

--结束END--

本文标题: 详解Ref在React中的交叉用法

本文链接: https://www.lsjlt.com/news/128599.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解Ref在React中的交叉用法
    目录一、首先说明下什么是Ref二、ref在hooks中的用法1、ref在hooks中HTMLDom的用法2、ref在hooks中与函数式组件的用法3、ref在hooks中与类组件一同...
    99+
    2024-04-02
  • 深入详解React中的ref
    对于 Ref 理解与使用,一些读者可能还停留在用 ref 获取真实 DOM 元素和获取类组件实例层面上其实 ref 除了这两项常用功能之外,还有很多别的小技巧通过本篇文章的学习,你将收获 React ref 的基本和进阶用法,并且能够明白 ...
    99+
    2023-05-14
    ref React
  • SQL Server中交叉联接的用法详解
    目录1、交叉联接(cross join)的概念2、交叉联接的语法格式3、交叉查询的使用场景3.1 交叉联接可以查询全部数据3.2 交叉联接优化查询性能4、总结 今天给大家介绍SQLS...
    99+
    2024-04-02
  • 交叉观察器 IntersectionObserver用法详解
    目录1. 背景2. 兼容性3. 用法3.1 observe3.2 unobserve3.3 disconnect3.4 takeRecords注意:4. callback 参数5. ...
    99+
    2022-11-13
    交叉观察器 IntersectionObserver 观察器 IntersectionObserver
  • React中的ref属性的使用示例详解
    目录ref 简介1. 字符串形式的ref2. create形式的ref3. 回调函数形式的ref总结:ref 简介 React提供的这个ref属性,表示为对组件真正实例的引用,其实就...
    99+
    2023-05-17
    React ref属性使用 React ref属性
  • C++中protobuf 的交叉编译使用详解
    目录前言简介使用方式编译安装使用步骤常见问题解决方案前言 为了提高通信效率,可以采用 protobuf 替代 XML 和 Json 数据交互格式,protobuf 相对来说数据量小,...
    99+
    2024-04-02
  • React中的ref怎么使用
    这篇文章主要介绍“React中的ref怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“React中的ref怎么使用”文章能帮助大家解决问题。1. ref 的理解与使用对于 Ref 的理解,要从...
    99+
    2023-07-04
  • vue3中的ref()详解
    目录ref()1. ref在模板中自动解包2. ref 在响应式对象中的解包3. 数组和集合类型的 ref 解包总结ref() 接受一个值,返回一个响应式的,可以修改的ref对象,这...
    99+
    2023-05-20
    vue3中的ref() vue3 ref()
  • 详解vue3中ref和reactive用法和区别
    vue3中ref和reactive区别 1、前言2、基本用法2.1 ref2.2 reactive 3、ref和reactive定义数组对比3.1 ref定义数组3.1 reactive定义数组 4、ref 和reactiv...
    99+
    2023-08-30
    vue.js javascript ecmascript
  • Template ref在Vue3中的实现原理详解
    目录背景模板的编译setup 函数返回值的处理组件的渲染Template Ref 的注册总结背景 最近我的 Vue3 音乐课程后台问答区频繁出现一个关于 Template ref 在...
    99+
    2024-04-02
  • SQL Server中交叉联接的使用方法
    这篇文章主要介绍“SQL Server中交叉联接的使用方法”,在日常操作中,相信很多人在SQL Server中交叉联接的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
  • GraphQL在react中的应用示例详解
    目录什么是 GraphQLGraphQL出现的意义传统API存在的主要问题:GraphQL 如何解决问题GraphQL基本语法标量类型对象类型枚举类型GraphQL 内置指令什么是 ...
    99+
    2022-11-13
    GraphQL在react应用 GraphQL react
  • 示例详解react中useState的用法
    useState useState 通过在函数组件里调用它来给组件添加一些内部 state。React 会在重复渲染时保留这个 state。useState 会返回一对值:当前状态...
    99+
    2024-04-02
  • react-redux的connect用法详解
    目录一、UI组件和容器组件二、connect1、导入2、使用三、mapStateToProps四、mapDispatchToProps五、Provider一、UI组件和容器组件 Re...
    99+
    2023-01-31
    react-redux的connect用法 react-redux使用
  • 详解react应用中的DOM DIFF算法
    目录前言 什么是Virtual DOM? 使用Virtual DOM的原因 DOM 渲染页面的操作流程 Virtual DOM的优势如何将DOM用virtual DOM 来表...
    99+
    2024-04-02
  • Python中交叉验证的方法有哪些
    这篇文章主要介绍“Python中交叉验证的方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中交叉验证的方法有哪些”文章能帮助大家解决问题。一、什么是交叉验证?交叉验证是一种用于估...
    99+
    2023-06-29
  • 详解Vue3中ref和reactive函数的使用
    目录前言ref 函数介绍ref 函数使用ref 函数处理基本数据类型ref 函数处理复杂数据类型ref 函数获取单个DOM元素其他相关方法reactive 函数介绍reactive ...
    99+
    2024-04-02
  • Golang交叉编译之跨平台编译使用详解
    目录在CMD命令行中编译设置Linux编译环境powershell命令行中一、CGO_ENABLED二、GOOS三、GOARCH四、GOHOSTOS五、GOHOSTARCH六、go ...
    99+
    2024-04-02
  • 详解如何在React中优雅的使用addEventListener
    目录使用 addEventListener 代替第三方库的事件方法一:state 变化,卸载/绑定事件方法二:使用闭包的方式卸载事件方法三:使用 ref 保存状态优化 state 手...
    99+
    2023-01-31
    React使用addEventListener React addEventListener
  • 详解React Native与IOS端之间的交互
    目录前置准备RN 传值给 iOS方法 1 正常传值给原生方法 2 传递回调函数方法 3 获取 promise 回调方法 4 获取 promise 的同步方式iOS 传值给 RN 端初...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作