美文网首页React
学习“组件”之前应先学习的:元素渲染

学习“组件”之前应先学习的:元素渲染

作者: Lia代码猪崽 | 来源:发表于2018-06-07 19:13 被阅读2次

一、元素是构成 React 应用的最小单位。

元素用来描述你在屏幕上看到的内容:

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

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

注意:
初学者很可能把元素的定义和一个内涵更广的定义“组件”给搞混了。
元素事实上只是构成组件的一个部分,所以我们还是推荐你先读完这一章节的内容再往后看。

二、将元素渲染到 DOM 中

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

<div id="root"></div>

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

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

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

// 使用JSX定义React元素
const element = <h1>Hello, world</h1>;
/* 
调用ReactDOM.render()方法:
ReactDOM.render(
    React元素,
    渲染到的Dom节点
);
*/
ReactDOM.render(
  element,
  document.getElementById('root')
);

页面上会展示出 “Hello World” 字样。

三、更新元素渲染

React 元素都是immutable 不可变的。当元素被创建之后,你是无法改变其内容或属性的。一个元素就好像是动画里的一帧,它代表应用界面在某一时间点的样子。

根据我们现阶段了解的有关 React 知识,更新界面的唯一办法是创建一个新的元素,然后将它传入 ReactDOM.render() 方法:

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

function tick() {
  const element = (
    <div>
      <h1>Hello, world!</h1>
      <h2>It is {new Date().toLocaleTimeString()}.</h2>
    </div>
  );
  ReactDOM.render(
    element,
    document.getElementById('root')
  );
}

// 每一秒执行一次获取到当前时间然后重新渲染出来
setInterval(tick, 1000);

注意:
在实际生产开发中,大多数React应用只会调用一次 ReactDOM.render() 。在下一个章节中我们将会详细介绍 有状态组件 实现 DOM 更新方式。

四、React 只会更新必要的部分

React DOM 首先会比较元素内容先后的不同,而在渲染过程中只会更新改变了的部分。

你可以使用浏览器的开发者工具来检查一下之前的例子

DOM inspector showing granular updates

即便我们每秒都创建了一个描述整个UI树的新元素,React DOM 也只会更新渲染文本节点中发生变化的内容。

根据我们以往的经验,将界面视为一个个特定时刻的固定内容(就像一帧一帧的动画),而不是随时处于变化之中(而不是处于变化中的一整段动画),将会有利于我们理清开发思路,减少各种bugs。

相关文章

  • 学习“组件”之前应先学习的:元素渲染

    一、元素是构成 React 应用的最小单位。 元素用来描述你在屏幕上看到的内容: 与浏览器的 DOM 元素不同,R...

  • React系统性学习(下)

    $ 前言   在《React系统性学习(上)》中我们主要学习了 什么是React JSX语法 元素渲染 组件(Co...

  • react 组件状态state

    之前我们没有学习组件状态之前,我们只能通过重新渲染组件来更新组件,现在我们有了组件状态这个东西,我们可以通过更改组...

  • react相关性能优化(持续更新)

    1.避免重复渲染 当一个组件的props或者state改变时,React通过比较新返回的元素和之前渲染的元素来决定...

  • 学习并实现react (3)

    复用组件 React 组件书写规则 组件可以直接渲染组件组件渲染多个children 时需要用 dom 元素进行包...

  • React 元素渲染学习

    元素是构成React应用的最小单位,用来描述我们在屏幕上看到的内容: 与浏览器的DOM元素不同,React当中的元...

  • Vue动态路由缓存不相互影响的解决办法

    关于react与vue中的key 之前在学习react的时候,常常遇到循环渲染组件时会提示需要在循环组件中加上ke...

  • vue 元素/组件 :key

    在元素/组件中使用:key,动态绑定元素/组件的key;可以起到强制刷新/重新渲染的效果(替换为新的元素/组件,而...

  • 插槽学习

    1.插槽子组件里的内容不会被渲染,子组件template中加入 元素占位便能渲染父组件...

  • wxml数据绑定,列表渲染,条件渲染

    学习目标 小程序生命周期 wxml数据渲染,列表渲染, 条件渲染 组件事件绑定 (bindtap, bindinp...

网友评论

    本文标题:学习“组件”之前应先学习的:元素渲染

    本文链接:https://www.haomeiwen.com/subject/hcfnsftx.html