详解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 相关文章推荐
javascript 常用方法总结
Jun 03 Javascript
form.submit()不能提交表单的原因分析
Oct 23 Javascript
js如何改变文章的字体大小
Jan 08 Javascript
JavaScript函数柯里化详解
Apr 29 Javascript
fullCalendar中文API官方文档
Feb 07 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
Oct 27 jQuery
Vue递归实现树形菜单方法实例
Nov 06 Javascript
vue弹出框组件封装实例代码
Oct 31 Javascript
openlayers4实现点动态扩散
Aug 17 Javascript
Openlayers绘制地图标注
Sep 28 Javascript
Vue3 响应式侦听与计算的实现
Nov 11 Javascript
Javascript webpack动态import
Apr 19 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 程序员也要学会使用“异常”
2009/06/16 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
2014/05/07 PHP
Docker 如何布置PHP开发环境
2016/06/21 PHP
Laravel4中的Validator验证扩展用法详解
2016/07/26 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
JavaScript CSS 修改学习第四章 透明度设置
2010/02/19 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
2012/08/17 Javascript
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
JavaScript的类型、值和变量小结
2015/07/09 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
精通JavaScript的this关键字
2020/05/28 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
Select下拉框模糊查询功能实现代码
2016/07/22 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
手把手教你 CKEDITOR 4 扩展插件制作
2019/06/18 Javascript
使用Python &amp; Flask 实现RESTful Web API的实例
2017/09/19 Python
python和shell监控linux服务器的详细代码
2018/06/22 Python
python 高阶函数简单介绍
2021/02/19 Python
5分钟实现Canvas鼠标跟随动画背景
2019/11/18 HTML / CSS
美国校园市场:OCM
2017/06/08 全球购物
N.Peal官网:来自伦敦的高档羊绒品牌
2018/10/29 全球购物
英国领先的在线高尔夫商店:Scottsdale Golf
2019/08/26 全球购物
开学典礼演讲稿
2014/05/23 职场文书
单位授权委托书范文
2014/08/02 职场文书
群众路线自我剖析材料
2014/10/08 职场文书
2015新年寄语(一句话)
2014/12/08 职场文书
公务员考察材料
2014/12/23 职场文书
放假通知
2015/04/14 职场文书
家长意见和建议怎么写
2015/06/04 职场文书