React中的refs的使用教程分享

ref是react中的一种属性,当render函数返回某个组件的实例时,可以给render中的某个虚拟dom节点添加一个ref属性,如下面的代码所示:

        var App = React.createClass({       render: function() {         return (           

); } }); React.render( , document.body );  

登录后复制

在上面的代码中,render函数里仅仅返回了一个

标签,

里仅有一个标签,在标签的属性中,添加了一个ref属性,官方文档上对于ref属性的解释如下:

ref 属性

React 支持一种非常特殊的属性,你可以用来绑定到 render() 输出的任何组件上去。这个特殊的属性允许你引用 render() 返回的相应的支撑实例( backing instance )。这样就可以确保在任何时间总是拿到正确的实例。

给标签设置ref属性有什么用途呢?下面是官方文档给出的解释:

在其它代码中(典型地事件处理代码),通过 this.refs 获取支撑实例( backing instance ),就像这样:this.refs.input。其中”input”就是上面给标签设置的ref属性的值。

通过ref属性,我们还可以拿到该虚拟DOM对应的真实DOM节点,有两种方法可以拿到真实DOM节点,如下代码所示:

 //下面4种方式都可以通过ref获取真实DOM节点 var usernameDOM = this.refs.username.getDOMNode(); var usernameDOM = React.findDOMNode(this.refs.username); var usernameDOM = this.refs['username'].getDOMNode(); var usernameDOM = React.findDOMNode(this.refs['username']);

登录后复制

下面通过一个demo来了解ref的使用:

demo在浏览器中运行的效果如下图:

React中的refs的使用教程分享

在最上面的输入框中输入任意1-10的数字,即可让下面10个输入框中对应的输入框获取焦点,如上图,输入3后,下面第3个输入框马上获取焦点,这里就用到了ref属性,代码如下:

nbsp;html>        Refs                var App = React.createClass({       handleChange: function(event) {         var index = event.target.value;         if(index >= 1 && index <= 10) {           //找到对应的输入框并将焦点设置到里面           var refName = "input" + index;           //var inputDOM = React.findDOMNode(this.refs[refName]);           var inputDOM = this.refs[refName].getDOMNode();           inputDOM.focus();         }       },       render: function() {         var inputs = [];         for(var i = 1; i <= 10; i++) {           inputs.push(


  • ); } return (


      {inputs} ) } }); React.render( , document.body );   
  • 登录后复制

    在render函数中,为html文档的body部分添加了10个输入框,每个输入框的ref属性都设置成了[“index” + 索引]的这种方式,然后在最上面的输入框的handleChange函数中,获取输入的数字,并得到ref属性的值,最后根据ref属性的值,找到对应的真实DOM节点,然后让该DOM节点获取焦点。

    相关推荐:

    React组件refs的使用实例分享

    以上就是React中的refs的使用教程分享的详细内容,更多请关注【创想鸟】其它相关文章!

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

    发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2786389.html

    (0)
    上一篇 2025年3月8日 17:43:30
    下一篇 2025年2月26日 00:59:22

    AD推荐 黄金广告位招租... 更多推荐

    相关推荐

    • 利用angular、react和vue实现相同的面试题组件

      react 和angular,vue 这三个框架最近都比较火,本文主要给大家介绍的是关于angular、react和vue实现相同的面试题组件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 面试题要求如下所示 …

      2025年3月8日
      200
    • React拖拽排序组件Dragact详解

      先来一张图看看: Typescript(TS) 最近一直在使用TS进行开发,Eggjs的Ts实践也写了一半。这玩意儿,真的是有毒的,因为能让你上瘾。 随便将一个项目迁移到TS之上,在强大的静态类型检测下,你就能轻松的发现一堆逻辑和边界错误。…

      2025年3月8日
      200
    • webpack-dev-server远程访问配置教程

      本文主要为大家分享一篇webpack-dev-server远程访问配置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧,希望能帮助到大家。 下面的package.json文件中配置的webpack-dev-server为…

      编程技术 2025年3月8日
      200
    • react、webpack、跨域代理多页面

      初学react,利用webpack进行工程化开发管理,遇到一些问题,如多页面处理,跨域代理的设置,如何同时引入使用jquery。第一次试水,简单写了一个表格组件。 先照着react官网提供的教程使用create-react-app创建rea…

      编程技术 2025年3月8日
      200
    • react轮播图组件react-slider-light详解

      本文主要和大家分享react轮播图组件react-slider-light详解,希望能帮助到大家。 react-slider-light a lightweight slider component built with react. 一个…

      编程技术 2025年3月8日
      200
    • React组件Dragact 0.1.4详解

      dragact 是一款react组件,他能够使你简单、快速的构建出一款强大的 拖拽式网格(grid)布局. 仓库地址:Dragact 经过几天的迭代时间Dragact已经能够支持自由缩放功能了(resize) 废话不多说,来看看demo 新…

      2025年3月8日
      200
    • React组件生命周期详解

      在使用react创建组件的过程中,会调用一个render方法,以及触发若干生命周期的方法。本文主要和大家讲一讲这些生命周期的方法是何时被执行的。 理解组件的生命周期,当组件被创建或销毁时,可以执行某些操作。此外,当 props 和 stat…

      2025年3月8日 编程技术
      200
    • 安装vue.js实例教程

      本文主要和大家分享安装vue.js实例教程,希望能帮助到大家。 1.使用win+r打开cmd   如果已经安装成功了,就会出现以上图片中的样式 登录后复制 2.安装cnpm node环境已经安装完成,npm包管理器也有了。由于有些npm有些…

      2025年3月8日 编程技术
      200
    • 简单介绍React

      本文主要和大家分享一下react的起源及发展,希望啊能帮助到大家。 字符拼接时代 – 2004 时间回到 2004 年,Mark Zuckerberg 当时还在宿舍捣鼓最初版的 Facebook 。这一年,大家都在用 PHP 的…

      2025年3月8日 编程技术
      200
    • Promise的基本使用方法教程

      本文主要和大家分享promise的基本使用方法教程,个人理解就是使用同步编程的写法完成异步编程操作。希望能帮助到大家。 const promise = new Promise((resolve, reject) => { //some…

      编程技术 2025年3月8日
      200

    发表回复

    登录后才能评论