zoukankan      html  css  js  c++  java
  • 两种ref的绑定形式

    两种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>
    	)
    }
    
  • 相关阅读:
    EJB
    Token
    FreeMarker
    solr
    maven学习四:maven集成jetty插件发布web项目 标签: maven
    代码生成器
    springIOplatform
    数据连接池
    freeMark模板引擎
    张萌作品集
  • 原文地址:https://www.cnblogs.com/axingya/p/13598832.html
Copyright © 2011-2022 走看看