详解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 相关文章推荐
探讨js中的双感叹号判断
Nov 11 Javascript
在JavaScript中重写jQuery对象的方法实例教程
Aug 25 Javascript
深入剖析JavaScript编程中的对象概念
Oct 21 Javascript
js对象浅拷贝和深拷贝详解
Sep 05 Javascript
angularjs实现的前端分页控件示例
Feb 10 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
Jun 13 Javascript
Angular5.1新功能分享
Dec 21 Javascript
vue 动态修改a标签的样式的方法
Jan 18 Javascript
webstorm和.vue中es6语法报错的解决方法
May 08 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
Mar 13 jQuery
微信小程序访问豆瓣电影api的实现方法
Mar 31 Javascript
React.js组件实现拖拽排序组件功能过程解析
Apr 27 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
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
2014/11/03 PHP
基于php实现七牛抓取远程图片
2015/12/01 PHP
php实现的debug log日志操作类实例
2016/07/12 PHP
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
ECMAScript6块级作用域及新变量声明(let)
2015/06/12 Javascript
jQuery实现查找最近父节点的方法
2016/06/23 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
vue 引入公共css文件的简单方法(推荐)
2018/01/20 Javascript
layui实现文件或图片上传记录
2018/08/28 Javascript
关于NodeJS中的循环引用详解
2019/07/23 NodeJs
js简单的分页器插件代码实例
2019/09/11 Javascript
python实现简单的TCP代理服务器
2014/10/08 Python
python中元类用法实例
2014/10/10 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
pytorch程序异常后删除占用的显存操作
2020/01/13 Python
Python爬虫程序架构和运行流程原理解析
2020/03/09 Python
Pycharm调试程序技巧小结
2020/08/08 Python
详解Python流程控制语句
2020/10/28 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
2021/02/03 Python
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
一套中级Java程序员笔试题
2015/01/14 面试题
企业给企业的表扬信
2014/01/13 职场文书
七一表彰活动方案
2014/01/18 职场文书
中学生自我鉴定
2014/02/04 职场文书
好人好事事迹材料
2014/02/12 职场文书
银行求职信
2014/05/31 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
先进个人推荐材料
2014/12/29 职场文书
医院办公室主任岗位职责
2015/04/01 职场文书
2015安全保卫工作总结
2015/04/25 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
2016幼儿园教师节新闻稿
2015/11/25 职场文书