Refs & DOM (React)

React中的Refs提供了一种访问DOM节点或React元素的方式,适用于管理焦点、动画、集成第三方库等场景。通常,避免过度使用Refs,而是通过state进行数据流动。创建Refs使用React.createRef(),并可通过ref属性附加到元素。回调Refs则允许更细粒度地控制何时设置和清除引用。
摘要由CSDN通过智能技术生成

Refs and the DOM

Refs 提供了一种方式,允许我们访问DOM节点火灾render 方法中创建的React 元素。
在典型的 React 数据流中,props 是父组件于子组件交互的唯一方式。要修改一个子组件,你需要使用新的props来重新渲染它。但是,在某些情况下,你需要在典型数据流之外强制修改子组件。被修改的子组件可能是一个 React 组件的实例,也可能是一个 DOM 元素。对于这两种情况,React 都提供了解决办法。

什么时候使用 Refs

下面是几个适合使用 refs 的情况:

  • 管理焦点,文本选择或媒体播放。
  • 触发强制动画。
  • 集成第三方 DOM 库。

避免使用 refs 来做任何可以通过声明式实现来完成的事情。
举个例子,避免在 Dialog 组件里暴露 open()和 close()方法,最好传递 isOpen 属性。

不要过度使用 Refs

你可能首先会想到使用 refs 在你的 app 中 “让事情发生” 如果是这种情况,考虑一下 state 属性应该被安排在那个组件层。通常情况下,让更高的组件层级拥有这个 state ,是更恰当的。

创建 Refs

Refs 是使用 React.createRef() 创建的,并通过 ref 属性附加到 React 元素。在构造组件时,通常将 Refs 分配给实例属性,以便可以在整个组件中引用它们。

class MyComponent extends React.Component {
   
	constructor(props) {
   
		super(porps);
		this.myRef = React.createRef();
	}
	render() {
   
		return <div ref={
   this.myRef} />;
	}
}
访问 Refs

当 ref 被传递给 render 中的元素时,对该节点的引用可以在 ref 的 current 属性中被访问。
const node = this.myRef.current;
ref 的值根据节点的类型而有所不同:

  • ref 属性用于 HTML 元素时,构造函数中使用 React.createRef() 创建的ref 接受底层 DOM 元素作为 current 属性。
  • ref属性用于自定义 class 组件时,ref 对象接受组件的挂载实例作为其 current 属性。
  • 你不能在函数组件上使用 ref 属性,因为他们没有实例。
为 DOM 元素添加 ref

使用 ref 去存储 DOM 节点的引用:

class CustomTextInput extends React.Component {
   
	constructor(porps){
   
		super(props);
		//创建一个 ref 来存储 textInput 的 DOM 元素
		this.textInput = React.createRef();
		this.focusTextInput = this.focusTextInput
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值