ReactJS学习系列课程(React ref的使用)

在我学习React的过程当中,总会被一些名词搞得晕头转向,但是细想起来又非常简单,比如react定义的这个refs,其实就是用于获取dom的一种方式。

在React中组件并不是真实的 DOM 节点,而是存在于内存之中的一种数据结构,叫做虚拟 DOM (virtual DOM)。只有当它插入文档以后,才会变成真实的 DOM 。根据 React 的设计,所有的 DOM 变动,都先在虚拟 DOM 上发生,然后再将实际发生变动的部分,反映在真实 DOM上,这种算法叫做 DOM diff ,它可以极大提高网页的性能表现。

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‘)
);

上面代码中,组件 MyComponent 的子节点有一个文本输入框,用于获取用户的输入。这时就必须获取真实的 DOM 节点,虚拟 DOM 是拿不到用户输入的。为了做到这一点,文本输入框必须有一个 ref 属性,然后 this.refs.[refName] 就会返回这个真实的 DOM 节点。

通过这个ref我们同样可以获取input的输入值。就是这么简单。

但是使用过程中我们切记:由于 this.refs.[refName] 属性获取的是真实 DOM ,所以必须等到虚拟 DOM 插入文档以后,才能使用这个属性,否则会报错。上面代码中,通过为组件指定 Click 事件的回调函数,确保了只有等到真实 DOM 发生 Click 事件之后,才会读取 this.refs.[refName] 属性。

原文连接:http://blog.csdn.net/jiangbo_phd/article/details/51758148

时间: 2024-08-25 07:46:28

ReactJS学习系列课程(React ref的使用)的相关文章

C++内存管理机制 C++深入学习系列课程 C++内存管理学习 侯捷主讲 视频教程 教学视频

百度云盘下载 ----------------------课程目录------------------------------ │ ├1.Overview.mp4│ ├2.内存分配的每一层面.mp4│ ├3.四个层面的基本用法.mp4│ ├4.基本构件之一newdelete expression(上).mp4│ ├5.基本构件之一newdelete expression(中).mp4│ ├6.基本构件之一newdelete expression(下).mp4│ ├7.Array new.mp4│

React学习系列

React学习系列 系列学习react 翻译地址 https://scotch.io/tutorials/learning-react-getting-started-and-concepts 我是初学者,英语也不是很好,不过一直强迫自己看英文文档. 这是理解翻译,翻译的不好,请见谅!()中的是我翻译过程中理解,参考下,有什么说的不对的欢迎指点下! 第一节:如何开始react和了解react的概念 1.React是什么 react是Facebook 开发出来用于促进UI交互,创建带有状态的,可复

MSDN Webcast 系列课程

云计算(Cloud) 云起龙骧系列课程 网络开发(Web) ASP.NET 4 风云之旅系列课程 ASP.NET 开发实践系列课程 MOSS2007 最佳实战 StepByStep 系列课程 Silverlight 3.0 探秘之旅系列课程 微软互联网平台系列课程 如何创建更好的 Silverlight 程序系列课程 Clubof.net 社交网站代码分析系列课程 ASP.NET 3.5 开发系列课程 IE8 开发新特性系列课程 Windows Live 汇聚你世界系列课程 Windows Li

reactjs学习一(环境搭配react+es6+webpack热部署)

reactjs学习一(环境搭配react+es6+webpack热部署) reactjs今年在前端圈里很火,用了三四个月,感觉确实很适合前端开发人员使用,值得深入一下,所以这里记录一下我简单的学习过程,首先是react的环境,由于现在react的新版本已经很稳定了,所以推荐使用es6+webpack来搭建开发环境. 首先,安装nodejs,略过,安装gitbrach,略过,直接搜索到相对应软件的官网,下载最新正式版本的软件,然后就下一步下一步完成安装就可以了,很简单的过程,但是不容忽略,如有问题

易搜微信营销初级系列课程全面免费学习带您进入微时代

IT行业企业商家: 不知不觉的送走了2014,进入了崭新的2015年,首先祝福广大IT行业的商家新年快乐!吉祥! 不知您是否觉得网络的飞速发展已经逐步影响着您的生活和工作?不知您是否觉得目前只能收集的发展已经完全的影响着您和身边人的所有?不知您是不是觉得微信对我们的生活工作都越来越起着不可忽视的地位和作用?不管你同不同意,事实上确实已经大家都已经深深的进入了这个与众不同的微信时代! 我们进一步对市场做了深入的了解和调查发现,很多朋友也想尝试用微信来做好自己的生意,但由于没有一个正确的对微信的认识

Python从入门到精通高校竞赛学习系列视频课程

课程目标Python从入门到精通高校竞赛学习系列视频课程适用人群Pythhon初学者,Python开发人员,有linux操作基础,能够坚持学习不放弃的同学,课程简介从零基础学习Python编程,理论结合实践,提高自己综合能力:方向和努力决定了自己的价值:通过本课程学习我们能够掌握基本开发知识,在工作和学习中独立完成相关任务:同时我们提供全面的技术支持和指导,如果有问题可以向我们咨询,我们会积极解决学习和工作中的问题 下载地址:百度网盘请添加链接描述 原文地址:http://blog.51cto.

MySQL学习系列2--MySQL执行计划分析EXPLAIN

1.Explain语法 EXPLAIN SELECT -- 变体:   EXPLAIN EXTENDED SELECT -- 将执行计划"反编译"成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2.执行计划分析和实例 创建员工表Employee create table Employee ( ID int auto_increment, Ename varchar(32), Age int, Salary float, MID int, P

【极客学院出品】Cocos2d-X系列课程之九-BOX2D物理引擎

Cocos2d-x 是时下最热门的手游引擎,在国内和国外手机游戏开发使用的份额各自是70%和25%,在App Store的top10中,有7个是用它开发的. 本节课程为Cocos2d-x系列课程之九,学习BOX2D物理引擎! 学习路径图: 课程适合小白系统学习,仅需6个课时,在极客学院首席讲师风趣幽默的课程里轻松掌握BOX2D物理引擎.恭喜你也从此将走上为牛X程序员的不归路. 今年上午9点正式上线,请别再期待娱乐圈的新闻了,马上開始学习吧>>> 我们还有很多其它更新更实战的课程,登录极客

tyvj P4751 NOIP春季系列课程 H&#39;s Problem

-H's Problem- 描述 小H是一个喜欢逛街的女孩子,但是由于上了大学,DDL越来越多了,她不能一直都处于逛街的状态.为了让自己能够更加沉迷于学习,她规定一次逛街只逛T个单位的时间. 小H从1号店出发,从1号店走到第i号店需要花费ai的时间,这些店形成了一条直线,也就是说小H从第i号店走到第i+1号店需要花费的时间为a{i+1}-ai.若小H选择了第i号店并且进去逛,则会消耗bi的时间.对于第i家店,小H都对它有自己的看法.具体地,可以用ci来表示小H是否喜欢这家店.如果ci=1,则表示