详解React 元素渲染


Posted in Javascript onJuly 07, 2020

元素是构成 React 应用的最小单位,它用于描述屏幕上输出的内容。

const element = <h1>Hello, world!</h1>;

与浏览器的 DOM 元素不同,React 当中的元素事实上是普通的对象,React DOM 可以确保 浏览器 DOM 的数据内容与 React 元素保持一致。

将元素渲染到 DOM 中

首先我们在一个 HTML 页面中添加一个 id="example"<div>:

<div id="example"></div>

在此 div 中的所有内容都将由 React DOM 来管理,所以我们将其称为 "根" DOM 节点。

我们用 React 开发应用时一般只会定义一个根节点。但如果你是在一个已有的项目当中引入 React 的话,你可能会需要在不同的部分单独定义 React 根节点。

要将React元素渲染到根DOM节点中,我们通过把它们都传递给 ReactDOM.render() 的方法来将其渲染到页面上:

const element = <h1>Hello, world!</h1>;
ReactDOM.render(
  element,
  document.getElementById('example')
);

详解React 元素渲染

更新元素渲染

React 元素都是不可变的。当元素被创建之后,你是无法改变其内容或属性的。

目前更新界面的唯一办法是创建一个新的元素,然后将它传入 ReactDOM.render() 方法:

来看一下这个计时器的例子:

function tick() {
 const element = (
  <div>
   <h1>Hello, world!</h1>
   <h2>现在是 {new Date().toLocaleTimeString()}.</h2>
  </div>
 );
 ReactDOM.render(
  element,
  document.getElementById('example')
 );
}
 
setInterval(tick, 1000);

运行结果

详解React 元素渲染

以上实例通过 setInterval() 方法,每秒钟调用一次 ReactDOM.render()。

我们可以将要展示的部分封装起来,以下实例用一个函数来表示:

function Clock(props) {
 return (
  <div>
   <h1>Hello, world!</h1>
   <h2>现在是 {props.date.toLocaleTimeString()}.</h2>
  </div>
 );
}
 
function tick() {
 ReactDOM.render(
  <Clock date={new Date()} />,
  document.getElementById('example')
 );
}
 
setInterval(tick, 1000);

除了函数外我们还可以创建一个 React.Component 的 ES6 类,该类封装了要展示的元素,需要注意的是在 render() 方法中,需要使用 this.props 替换 props:

class Clock extends React.Component {
 render() {
  return (
   <div>
    <h1>Hello, world!</h1>
    <h2>现在是 {this.props.date.toLocaleTimeString()}.</h2>
   </div>
  );
 }
}
 
function tick() {
 ReactDOM.render(
  <Clock date={new Date()} />,
  document.getElementById('example')
 );
}
 
setInterval(tick, 1000);

以上就是详解React 元素渲染的详细内容,更多关于React 元素渲染的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
jQuery代码优化 事件委托篇
Nov 01 Javascript
js对象关系图 方便dom操作
Mar 18 Javascript
js修改table中Td的值(定义td的单击事件)
Jan 10 Javascript
jquery1.9 下检测浏览器类型和版本的方法
Dec 26 Javascript
JS实现数组去重方法总结(六种方法)
Jul 14 Javascript
使用JS获取SessionStorage的值
Jan 12 Javascript
JS使用队列对数组排列,基数排序算法示例
Mar 02 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
Jul 02 Javascript
微信小程序实现多行文字超出部分省略号显示功能
Oct 23 Javascript
Vuex中实现数据状态查询与更改
Nov 08 Javascript
JQuery中的常用事件、对象属性与使用方法分析
Dec 23 jQuery
前端 javascript 实现文件下载的示例
Nov 24 Javascript
JS数据类型判断的几种常用方法
Jul 07 #Javascript
JavaScript实现像雪花一样的Hexaflake分形
Jul 07 #Javascript
jQuery 实现扁平式小清新导航
Jul 07 #jQuery
vue@cli3项目模板怎么使用public目录下的静态文件
Jul 07 #Javascript
JS实现移动端可折叠导航菜单(现代都市风)
Jul 07 #Javascript
React+EggJs实现断点续传的示例代码
Jul 07 #Javascript
JS实现联想、自动补齐国家或地区名称的功能
Jul 07 #Javascript
You might like
php cookie的操作实现代码(登录)
2010/12/29 PHP
PHP面向对象之旅:深入理解static变量与方法
2014/01/06 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
php二维码生成
2015/10/19 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
jQuery.form插件的使用及跨域异步上传文件
2016/04/27 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
jquery判断input值不为空的方法
2016/06/05 Javascript
使用jsonp实现跨域获取数据实例讲解
2016/12/25 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
用js将long型数据转换成date型或datetime型的实例
2017/07/03 Javascript
JS实现的贪吃蛇游戏案例详解
2019/05/01 Javascript
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
将Python代码嵌入C++程序进行编写的实例
2015/07/31 Python
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
python cx_Oracle模块的安装和使用详细介绍
2017/02/13 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
2017/12/15 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
Python selenium的基本使用方法分析
2019/12/21 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
将n个数按输入顺序的逆序排列,用函数实现
2012/11/14 面试题
珍惜水资源建议书
2014/03/12 职场文书
爱耳日活动总结
2014/04/30 职场文书
公司财务会计主管应聘求职信
2014/09/26 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
成绩报告单家长评语
2014/12/30 职场文书
2016年社区“我们的节日·中秋节”活动总结
2016/04/05 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
python 模块重载的五种方法
2021/04/24 Python
python数字图像处理实现图像的形变与缩放
2022/06/28 Python