React进阶话题探讨

Time: 20190717

在浏览器中使用React需要引入两个类库:

  • React
  • ReactDOM

其中React用于创建视图,ReactDOM用于在浏览器中渲染UI.

需要用HTML元素,用于ReactDOM渲染UI。

一种直接在前端使用的方式是:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Pure React Samples</title>
</head>
<body>
    <script src="https://unpkg.com/react@15.4.2/dist/react.js"></script>
    <script src="https://unpkg.com/react-dom@15.4.2/dist/react.js"></script>
    <script> 
        // 添加React应用的JS代码
    </script>
</body>
</html>

VirtualDOM

什么是DOM元素?

构成HTML文档的元素就是DOM元素。

什么是Ajax技术?
浏览器可以使用Ajax技术请求和载入一小部分数据,因此整个Web程序可以只用一个页面,依靠JS更新用户界面。

初始载入一个页面,然后使用JS动态销毁或创建新的用户界面。

即,让JS承担了大量的工作。

DOM API

JS可以使用它们来动态交互、修改DOM。如:

  • document.createElement
  • document.appendChild

值得注意的是,用DOM API插入新元素的过程很低效。

React脚本库的设计初衷是帮助用户更新浏览器的DOM。使用React,我们不直接与DOM打交道,而是和Virtual DOM交互。

Virtual DOM概念上和HTML元素是相互对应的,只是它们是JS对象。追访问JS对象要比访问DOM API高效。

我们直接操作JS对象,即Virtual DOM,让React通过DOM API构造UI和浏览器交互,React负责高效。

如:

React.createElement("h1", null, "Baked Salmon")

生成的HTML元素是:

<h1>Baked Salmon</h1>

其中第二个参数是属性,我们可以创建包含属性的元素。

React.createElement("h1", 
 {id: "recipe-0", 'data-type': "title"},
 "Baked Salmon")

ReactDOM

ReactDOM.render可以将子节点渲染到DOM上。举个例子:

var dish = React.createElement("h1", null, "Baked Salmon")
ReactDOM.render(dish, document.getElementById('react-container'))

渲染效果:

<body>
  <div id="react-container">  
    <h1> Baked Salmon</h1>
  </div>
</body>

用户需要完成的全部工作是:创建元素,并将它渲染到DOM上。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原教程内容详见精益 React 学习指南,这只是我在学习过程中的一些阅读笔记,个人觉得该教程讲解深入浅出,比目前大...
    leonaxiong阅读 7,840评论 1 18
  • 3. JSX JSX是对JavaScript语言的一个扩展语法, 用于生产React“元素”,建议在描述UI的时候...
    pixels阅读 7,911评论 0 24
  • 1、什么是react React.js 是一个帮助你构建页面 UI 的库。React.js 将帮助我们将界面分成了...
    谷子多阅读 7,294评论 1 13
  • React基础 React组件化编程 Create React App 创建React 前端工程 题外话题:页面性...
    BeautifulHao阅读 5,455评论 0 3
  • HTML模版 之后出现的React代码嵌套入模版中。 1. Hello world 这段代码将一个一级标题插入到指...
    ryanho84阅读 11,410评论 0 9