七.获取真实的DOM节点

组件并不是真实的DOM节点。而是存在于内存之中的数据结构。叫做虚拟DOM(virtual DOM). 只有当它插入文档后,才会变成真实的DOM。

根据React的设计。所有的DOM变动。都先在虚拟DOM下发生。然后在将实际发生变动的部分,反应在真实DOM上。这种算法叫DOMdiff.他可以极大的提高网页的性能表现。

但是有时需要从组件获取真实 DOM 节点。这时要用到ref属性。

<!DOCTYPE html>
<html>
  <head>
    <script src="js/react.js"></script>
    <script src="js/react-dom.js"></script>
    <script src="js/browser.min.js"></script>
  </head>
  <body>
    <div id="example"></div>
    <script type="text/babel">

var MyComponent = React.createClass({
        handleClick:function(){
          this.refs.myTextInput.focus();
        },

render:function(){
          return (
            <div>
              <input type="text" ref="myTextInput" />
              <input type="button" value="Focus the text input" onClick={this.handleClick} />
            </div>
            )
        }
      })

ReactDOM.render(
        <MyComponent />,
        document.getElementById("example")
        )
    </script>
  </body>
</html>

上面代码中 组件MyComponent 的子节点有个文本输入框,用于获取用户的输入。

这时就必须获取真实的DOM节点。虚拟节点是拿不到用户输入的。

为了做到这一点,文本输入框必须有个ref 属性。然后 this.refs[refName]就会返回这个真实DOM节点。

需要注意的是。由于 this.refs[refName]获取的是真实的DOM节点。所以必须等到虚拟DOM插入文档以后,才能使用这个属性,否则会报错。

上面代码中。通过为组件指定 Click事件的回调函数。确保了只有等到真实DOM发生Click事件之后才会读取this.refs[refName]属性

时间: 2024-11-13 10:02:04

七.获取真实的DOM节点的相关文章

react入门-----(jsx语法,在react中获取真实的dom节点)

1.jsx语法 1 var names = ['Alice', 'Emily', 'Kate']; 2 <!-- HTML 语言直接写在 JavaScript 语言之中,不加任何引号,这就是 JSX 的语法,它允许 HTML 与 JavaScript 的混写 --> 3 ReactDOM.render( 4 <div> 5 { 6 names.map(function (name) { 7 return <div>Hello, {name}!</div> 8

3. 数据双向绑定、ref获取vue中DOM节点

1. 数据的双向绑定 v-model 指令可以实现数据的双向绑定 2. ref获取vue中的DOM节点 注意:节点元素必须使用"ref" 定义一个唯一值,用于定位 原文地址:https://www.cnblogs.com/qfshini/p/12111009.html

vue怎么不通过dom操作获取dom节点

今天写一个公众号的项目,写了一个vue的搜索组件,点击搜索框时,背景出现一个遮罩,代码结构如下: template:`<div class="searchBar-div"> <input v-model="keyWord" @keyup.enter='startSearch()' class="searchBar-input" type="search" placeholder="搜索"

原生JS的DOM节点操作

DOM(Document Object Model/文档对象模型)是针对HTML和XML文档的一个API.DOM节点树:在文档中出现的空格.回车.标签.注释.文本.doctype.标签等都属于DOM节点. 操作DOM节点的方式无非就是:创建.添加(插入).移除.替换.查找(获取).克隆DOM节点. 创建文本节点:var newText = document.createTextNode('文本节点');创建标签节点:var newNode = document.createElement('di

(转载)html dom节点操作(获取/修改/添加或删除)

DOM 是关于如何获取.修改.添加或删除 HTML 元素的标准,下面为大家介绍下html dom节点操作,感兴趣的朋友可以参考下 HTML DOM 是关于如何获取.修改.添加或删除 HTML 元素的标准.在 HTML DOM 中,所有事物都是节点.DOM 是被视为节点树的 HTML. 根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点: 整个文档是一个文档节点 每个 HTML 元素是元素节点 HTML 元素内的文本是文本节点 每个 HTML 属性是属性节点 注释是注释节

通过DOM节点操作来获取表单信息

这是之前突发奇想地用dom节点的关系来操作表单的故事.. 事情的经过是这样的,大概就是一个平台注册后有留言功能,管理员登录之后可以对这些留言进行回复.这个页面呢,就是通过foreach获取到数据库里的信息,把用户的ID以及留言信息最后呈现在界面上的样子大概如下图(我的画图天赋真是杠杠滴)(害羞捂脸) 没错就是这么酷炫的. 左侧是用户的ID 中间是用户留言内容 每个后面都有一个回复按钮 管理员点击回复之后 相应的留言框下部就会出现一个文本框,然后就可以愉快的回复了.对了还有一个回复发送以及删除功能

JavaScript获取DOM节点HTML元素CSS样式

JavaScript获取DOM节点HTML元素CSS样式技术 maybe yes 发表于2015-01-10 18:07 原文链接 : http://blog.lmlphp.com/archives/59  来自 : LMLPHP后院 如何使用 JavaScript 获取某个 DOM 节点下 HTML 元素的 CSS 样式值?使用过 JQuery 的童鞋一定都非常的熟悉,Jquery 提供了非常强大的 CSS 方法,可以很方便的设置和获取元素的 style 属性. 某些情况下,我们不能使用 JQ

获取dom节点

如何使用 JavaScript 获取某个 DOM 节点下 HTML 元素的 CSS 样式值?使用过 JQuery 的童鞋一定都非常的熟悉,Jquery 提供了非常强大的 CSS 方法,可以很方便的设置和获取元素的 style 属性. 某些情况下,我们不能使用 JQuery 时,就必须使用纯 JavaScript 获取元素的 style 属性值.本文将介绍使用纯 JavaScript 获取元素的的样式值. 使用 CSS 控制页面的四种方式,分别为行内样式(内联样式).内嵌式.链接式.导入式,下面分

jQuery 获取DOM节点的两种方式

jQuery中包裹后的DOM对象实际上是一个数组,要获得纯粹的DOM对象可以有两种方式: 1.使用数组索引方式访问,例如: var dom = $(dom)[0]; 2.使用函数get()访问,例如: var dom = $(dom).get(0); get()函数中的参数为索引号. 3.示例 var div = document.createElement("DIV"); div.innerText = "TEST IS OK!"; document.body.a