首页 > 其他 > 详细

两种ref的绑定形式

时间:2020-09-01 22:30:29      阅读:119      评论:0      收藏:0      [点我收藏+]

两种ref的绑定形式

作用:可以标记组件,更快的找到对应位置。

通过ref就可以给元素作标记 ref="xxx" 这种方式在react官方中不推荐使用了,作为了解即可

官网上推荐了两种ref绑定形式

1.回调的形式<input ref = {el=>this.textInput=el}/>

举例:输入框焦点

class App extends React.Component{
	componentDidMount(){
		this.textInput.focus()
	}
	render(){
        return(
			<div>
				<input ref={el=>thisInput=el}/>
			</div>
        )
	}
}

2.createRef

? (1)创建一个ref的引用。

? (2)需要在组件或者dom元素上通过ref做好标记

? (3)注意:使用current属性才可以获取到dom组件

类组件:

class App extends React.Component{
	constructor(){
		super()//继承的时候,第一行必须要写super  目的就是用来调用父类的构造函数
		this.myRef = React.creatRef();//01.-创建了一个ref的引用
	}
	componentDidMount(){
		//03. 注意:使用current属性才可以获取到dom组件
		this.myRef.current.focos()
	}
	
	render(){
		return(
			<div>
				{/*02需要在组件或者dom元素上通过ref做好标记*/}
				<input ref={this.myref}/>
				<button onClick={onButtonClick}>Focus the input</button>
			</div>
		)
	}
}

函数式组件的应用

函数式组件我们面临的一个问题:函数式组件中是不能访问到this的!那么该如何在函数式组件中获取dom元素?我们可以通过react 16.8之后推出的react Hooks来去解决此问题。采用 useRef这个hooks来去解决在函数式组件中给元素做标记的问题。

1.通过useRef创建一个ref对象

2.通过ref绑定dom或者组件

3.通过inputEl.current属性就可以获取到绑定的input dom元素了

const App = props =>{
	//1.通过useRef创建一个ref对象
	const inputEl = React.useRef(null)
	const onButtonClick = ()=>{
		//3.通过inputEl.current属性就可以获取到绑定的input  dom元素了
		inputEl.current.focos()
	}
	return(
		<div>
			{/*2.通过ref绑定dom或者组件*/}
			<input ref = {inputEl}/>
			<button onClick={onButtonClick}>按钮</button>
		</div>
	)
}

两种ref的绑定形式

原文:https://www.cnblogs.com/axingya/p/13598832.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!