react 中 ref 的用法

说明

  • 本文通过ref 使其获得光标来进行展示
  • 使用到了 componentDidMount() 方法: 在第一次渲染后调用,只在客户端
    • 用来执行代码,操作 ref
  • ref 的名字统一命名为 content
  1. 使用 string 的方式直接绑定
  • 这种方法以后会被废弃
<input type="text" ref="content"/>    //绑定
this.refs.content.focus()     //调用

代码展示:

    <script type="text/babel">

        class App extends React.Component {
            componentDidMount(){
                console.log(this.refs)     //打印 ref 看看效果
                this.refs.content.focus()  //获取 ref --- this.refs.xxx
            }
            render(){
                return (
                    <div>
                        <li>你好,这里是 li</li>
                        <input type="text" ref="content"/>
                    </div>
                )
            }
        }
        ReactDOM.render(<App />, document.getElementById("app"))
    </script>

打印 ref 展示

在这里插入图片描述
视图层结果展示
在这里插入图片描述

  1. callback回调函数形式
  • 推荐使用
  • 就是将这个元素 ref的名字绑定到this里面,调用的时候直接this.xxx
 <input type="text" ref={(el)=>this.content = el}/>   //绑定
this.content.focus()   //调用

代码展示:

    <script type="text/babel">

        class App extends React.Component {
            componentDidMount(){
                console.log(this.content)
                this.content.focus()
            }
            render(){
                return (
                    <div>
                        <li>你好,这里是 li</li>
                        <input type="text" ref={(el)=>this.content = el}/>
                    </div>
                )
            }
        }
        ReactDOM.render(<App />, document.getElementById("app"))
    </script>

打印 ref 展示
在这里插入图片描述
视图层结果展示
在这里插入图片描述

  1. createRef 形式(最新的方式)
  • 推荐使用
  • 通过createRef的形式进行ref的元素绑定
this.content = React.createRef()  //声明
<input type="text" ref={this.content}/>  //绑定
this.content.current.focus()   //调用

代码展示:

    <script type="text/babel">

        class App extends React.Component {
            constructor(){
                super()
                this.content = React.createRef()  //通过createRef的形式进行ref的元素绑定
            }
            componentDidMount(){
                console.log(this.content)     
                this.content.current.focus()   //第三步使用 //注意:通过current属性才可以获取到dom组件

            }
            render(){
                return (
                    <div>
                        <li>你好,这里是 li</li>
                        {/*第二步:需要在使用的组件或者dom元素上通过ref指明*/}
                        <input type="text" ref={this.content}/>
                    </div>
                )
            }
        }
        ReactDOM.render(<App />, document.getElementById("app"))
    </script>

打印 ref 展示
在这里插入图片描述
视图层结果展示
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值