第三章 创建虚拟DOM的两种方式和JSX的语法规则

简介: 第三章 创建虚拟DOM的两种方式和JSX的语法规则

1、传统的javaScript创建方式

调用方法:React.createElement(参数1,参数2,参数3)

参数1:创建的标签的名称——和HTML的标签同名

参数2:标签的属性——如:id等

参数3:填充标签的内容

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Hello React</title>
</head>
<body>
    <!-- 准备好员工“容器” -->
    <div id="app"></div>
    <!-- 引入ReactJS核心库 -->
    <script type="text/javascript" src="../JS/react.development.js"></script>
    <!-- 引入React-DOM核心库,用于操作DOM -->
    <script type="text/javascript" src="../JS/react-dom.development.js"></script>
    <script type="text/javascript">
      // 1、创建虚拟DOM
      const VDOM = React.createElement('h1',{id: 'title'},'Hello React')
      // 2、将虚拟DOM渲染到页面
      ReactDOM.render(VDOM, document.getElementById('app'))
    </script>
</body>
</html>

注意:第二个参数在没有内容并且第三个参数有值的时候,第二个参数也要用{}来占位,不能省略。

2、jsx的创建方式

jsx的方式比较简单,直接创建DOM结构,最后交给react去渲染即可。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Hello React</title>
</head>
<body>
    <!-- 准备好员工“容器” -->
    <div id="app"></div>
    <!-- 引入ReactJS核心库 -->
    <script type="text/javascript" src="../JS/react.development.js"></script>
    <!-- 引入React-DOM核心库,用于操作DOM -->
    <script type="text/javascript" src="../JS/react-dom.development.js"></script>
    <!-- 引入Babel,用于编译jsx为js -->
    <script type="text/javascript" src="../JS/babel.min.js"></script>
    <!-- 此处类型为babel -->
    <script type="text/babel">
      // 1、创建虚拟DOM
      const VDOM = <h1>Hello React</h1> // 此处不能加引号,因为不是字符串
      // 2、将虚拟DOM渲染到页面
      ReactDOM.render(VDOM, document.getElementById('app'))
    </script>
</body>
</html>

3、比较明显的区别

  • 对于复杂的dom结构,js的方式需要方法嵌套,而jsx不需要。
  • jsx的结构层次分明,而js的方式对于复杂的结构比较混乱,维护较困难。
  • jsx代码简洁,js方式代码冗长。

4、jsx的语法规则

  • 定义虚拟DOM时,不要写括号
  • 标签中混入JS表达式时要用{}
  • 内联样式,要用style={{key:value}}的形式去写
  • 只有一个根标签
  • 标签必须闭合
  • 标签首字母小写,则该标签会转为html中同名元素,若html中无该标签对应的同名元素则报错
  • 若标签首字母大写,react就去渲染对应的组件,若组件没有定义,则报错
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Hello React</title>
  <style>
    .title{
      width: 100%;
      background-color: orange;
    }
  </style>
</head>
<body>
    <!-- 准备好员工“容器” -->
    <div id="app"></div>
    <!-- 引入ReactJS核心库 -->
    <script type="text/javascript" src="../JS/react.development.js"></script>
    <!-- 引入React-DOM核心库,用于操作DOM -->
    <script type="text/javascript" src="../JS/react-dom.development.js"></script>
    <!-- 引入Babel,用于编译jsx为js -->
    <script type="text/javascript" src="../JS/babel.min.js"></script>
    <!-- 此处类型为babel -->
    <script type="text/babel">
      const myId = 'Genius'
      const myData = 'Hello,React'
      // 1、创建虚拟DOM
      const VDOM =(
        <div>
          <h2 className="title" id={myId.toLocaleLowerCase()}>
            <span style={{color:'white'}}>{myData.toLocaleLowerCase()}</span>
          </h2>  
          <input type="0"/>
        </div>
      ) // 此处不能加引号,因为不是字符串
      // 2、将虚拟DOM渲染到页面
      ReactDOM.render(VDOM, document.getElementById('app'))
    </script>
</body>
</html>


相关文章
|
5月前
|
JavaScript 前端开发 编译器
说说你对虚拟 DOM 的理解?
说说你对虚拟 DOM 的理解?
45 0
|
4月前
|
JavaScript 前端开发 算法
虚拟DOM是React的关键技术,它是个轻量的JS对象树,模拟实际DOM结构。
【6月更文挑战第27天】虚拟DOM是React的关键技术,它是个轻量的JS对象树,模拟实际DOM结构。当状态改变,React不直接修改DOM,而是先构建新的虚拟DOM树。通过 diff 算法比较新旧树,找到最小变更,仅更新必要部分,提高性能,避免频繁DOM操作。虚拟DOM还支持跨平台应用,如React Native。它优化了更新流程,简化开发,并提升了用户体验。
34 1
|
5月前
|
XML JavaScript 前端开发
JavaScript简介&引入方式(JavaScript基础语法、JavaScript对象、BOM、DOM、事件监听)
JavaScript简介&引入方式(JavaScript基础语法、JavaScript对象、BOM、DOM、事件监听)
40 2
|
5月前
|
移动开发 JavaScript 前端开发
jQuery 根据 DOM 元素 attribute 进行过滤的语法
jQuery 根据 DOM 元素 attribute 进行过滤的语法
|
5月前
|
JavaScript 算法 前端开发
虚拟Dom
虚拟Dom
|
5月前
|
JavaScript 前端开发 算法
深入理解虚拟DOM:原理、优势与实践
深入理解虚拟DOM:原理、优势与实践
192 0
|
5月前
|
JavaScript 前端开发 算法
深入探讨前端框架Vue.js中的虚拟DOM机制
本文将深入探讨前端框架Vue.js中的虚拟DOM机制,分析其原理、优势以及在实际开发中的应用场景,帮助读者更好地理解Vue.js框架的核心特性。
|
5月前
|
JavaScript 算法 前端开发
Vue的虚拟DOM:Vue虚拟DOM的工作原理
【4月更文挑战第24天】Vue的虚拟DOM提升渲染性能,通过创建JavaScript对象树(虚拟DOM树)来跟踪DOM变化。当状态改变,Vue用新的虚拟DOM树与旧树对比(diff算法),找到最小DOM操作集合来更新真实DOM。优化策略包括减少状态变化、使用key属性和简化组件结构。理解虚拟DOM工作原理有助于Vue的性能优化。
|
5月前
|
JavaScript 前端开发 算法
什么是虚拟dom
什么是虚拟dom
|
5月前
|
JavaScript 前端开发 算法
为什么虚拟dom会提高性能?
为什么虚拟dom会提高性能?
62 0