React 将多个ref同时赋给一个element
需求:
有一个组件中有两个ref,一个f是orwardRef暴露出的ref,另一个是内部维护的ref
如何将这个两个ref都赋到 一个element上?
const Element = forwardRef((props, ref) => {const insiderRef = useRef(null);return (<div></div>)
})
解决方案:
ref可以接收一个回调函数,这个回调函数在组件挂载或者卸载的时候被调用,函数参数为组件实例或DOM元素。
可以利用此机制,实现一个函数为两个ref赋值。
hooks实现如下:
import { MutableRefObject, Ref, useMemo } from 'react';function setRef<T>(ref: MutableRefObject<T | null> | ((instance: T | null) => void) | null | undefined,value: T | null,
): void {if (typeof ref === 'function') {ref(value);} else if (ref) {ref.current = value;}
}export default function useForkRef<InstanceA, InstanceB>(refA: Ref<InstanceA> | null | undefined,refB: Ref<InstanceB> | null | undefined,
): Ref<InstanceA & InstanceB> | null {/*** This will create a new function if the ref props change and are defined.* This means react will call the old forkRef with `null` and the new forkRef* with the ref. Cleanup naturally emerges from this behavior.*/return useMemo(() => {if (refA == null && refB == null) {return null;}return (refValue) => {setRef(refA, refValue);setRef(refB, refValue);};}, [refA, refB]);
}
React 将多个ref同时赋给一个element相关推荐
- React基础(2)—— React函数式组件使用ref
React函数式组件使用ref ref ref的作用 ref用于获取DOM元素或子组件实例. useRef useRef作用 useRef用于返回一个可变的ref对象.这个refduix的curren ...
- 构建一个react项目_您想要了解更多有关React的内容吗? 让我们构建一个游戏,然后玩。...
构建一个react项目 by Samer Buna 通过Samer Buna 您想要了解更多有关React的内容吗? 让我们构建一个游戏,然后玩. (Do you want to learn more ...
- adoquery查询结果如何赋给一个变量(delphi和c++ builder)
我用的是adoquery进行数据库查询,但是我不想把查询的结果显示出来,只是想赋给一个变量,请问我这个变量该怎样去设置呢 ? 回复人:sunriver 回复时间:2005-6-3 9:11:00 p ...
- c语言如何用fscanf将字符串读取,在c语言中如何将文本内容 赋给一个 字符串
在c语言中如何将文本内容 赋给一个 字符串 来源:互联网 宽屏版 评论 2009-08-13 04:59:12 分类: 电脑/网络 >> 程序设计 >> 其他编程语言 问题 ...
- [react] 怎样将多个组件嵌入到一个组件中?
[react] 怎样将多个组件嵌入到一个组件中? import A from '/*' 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起讨论 主目录 与歌谣 ...
- mysql substring函数截取值后赋给一个declare变量
今天写的一个mysql存储过程涉及到对一个传入参数的字符串截取,然后需要判断截取字符串进行一系列操作,最开始用select subtring() into 这样的方法将截取值赋于declare变量直 ...
- 2.8 将一个整型变量的值赋给一个布尔型变量,再将这个布尔型变量的值赋给一个整型变量,得到的值是多少?
试题描述 将一个整型变量的值赋给一个布尔型变量,再将这个布尔型变量的值赋给一个整型变量,得到的值是多少? 输入格式 一个整型范围内的整数,即初始时整型变量的值. 输出格式 一个整数,经过上述过程后得到 ...
- react.js 给标识ref,获取内容
import React,{Component} from 'react' import ReactDOM from 'react-dom' class App extends Component{ ...
- TypeScript与React中如何使用ref
父组件 在父组件中,编写如下: 类中定义child,用于存放子组件的作用域 public child: any;Copy to clipboardErrorCopied 绑定子组件作用域 public ...
最新文章
- Ruby中的设计模式
- 微软Silverlight 5开发书籍汇总
- 【JVM】三色标记法与读写屏障
- Request介绍及演示样例 PART1
- Ubuntu 16.04升级Linux内核为4.7.0最快的方法
- 自己整理出来的一些标签
- 2.从Paxos到Zookeeper分布式一致性原理与实践---一致性协议
- oracle11g的adg需要付费嘛,Oracle11g ADG 搭建
- python北京房价预测_python数据分析——北京房价分析
- 线性代数辅导讲义(第四章 线性方程组)
- MacBook Pro 2017版A1708 更换ssd
- 微信小程序添加激励式广告
- scala reduce和Fold
- mac系统怎么给文件夹加密?mac文件夹加密教程
- 【优化算法】改进的灰狼优化算法(IGWO)【含Matlab源码 1349期】
- xiuno开发文档_$ip-XiunoPHP 4.0 开发手册
- Gartner 2022 应用安全测试魔力象限
- 关于Java使用POI对Excel2003和2007的导入和导出
- Excel区间数据拆分
- [加密]展讯secureboot方案
热门文章
- 居家好物分享:多特瑞精油,让生活更“多”姿“多”彩!
- python XGboost回归预测 算法实现和原理讲解(比赛青睐)
- 荣耀路由器家族新品开箱上手 wifi6时代全面来临
- miui无法降级安装app_小米8手机安卓P版MIUI10降级教程,送给那些后悔升级的小伙伴...
- android夜间模式护眼,长时间看开着护眼模式(夜间模式)玩手机,这样对人有影响吗?...
- 1 035.00 php,樱花校园模拟器历史版本
- java csv文件tozip后损坏_教你修复损坏的gz或tar.gz压缩文件
- 06 SpringBoot企业实战多环境切换之Profile
- 查看python关键字的方法,查看python关键字的方法
- 你一定要收藏的全网最完整CAD快捷键大全!三