美文网首页
3.React中的JSX

3.React中的JSX

作者: 白水螺丝 | 来源:发表于2018-08-02 12:32 被阅读19次

为什么要使用JSX呢?JSX又是什么呢?我们一步一步的了解。

为什么使用JSX

先看一个简单的例子,如下:

// 1. 导入 react
import React from 'react'
import ReactDOM from 'react-dom'

// 2. 创建 虚拟DOM
// 参数1:元素名称  参数2:元素属性对象(null表示无)  参数3:当前元素的子元素string||createElement() 的返回值
const divVD = React.createElement('div', {
  title: 'hello react'
}, 'Hello React!!!')

// 3. 渲染
// 参数1:虚拟dom对象  参数2:dom对象表示渲染到哪个元素内 参数3:回调函数
ReactDOM.render(divVD, document.getElementById('app'))

React在render时(渲染时)需要传入一个虚拟DOM的对象。创建虚拟DOM对象的方式是原生JS。上面的例子中只是创建一个普通的Div节点。那么对于一个复杂并带有层级结构的页面时会是什么样呢?如下:

var dv = React.createElement(
  "div",
  { className: "shopping-list" },
  React.createElement(
    "h1",
    null,
    "Shopping List for "
  ),
  React.createElement(
    "ul",
    null,
    React.createElement(
      "li",
      null,
      "Instagram"
    ),
    React.createElement(
      "li",
      null,
      "WhatsApp"
    )
  )
)
// 渲染
ReactDOM.render(dv, document.getElementById('app'))

可以看出,原生JS创建虚拟DOM非常的复杂且不友好。因此React的JSX就隆重登场了。

JSX是什么

JSX是JavaScript XML的简称,能在JS中编写的XML语法,用它来编写html标签或者组件标签。它是不能在浏览器中直接运行的,因此它需要babel-preset-react进行转码编译成原生JS后才能在浏览器中运行。所以简单的说JSX就是构建虚拟DOM的语法糖。

注意:JSX语法,最终会被编译为 createElement() 方法
推荐:使用 JSX 的方式创建组件
安装:npm i -D babel-preset-react (依赖与:babel-core/babel-loader)

/* 1 在 .babelrc 开启babel对 JSX 的转换 */
{
  "presets": [
    "env", "react"
  ]
}

/* 2 webpack.config.js */
module: [
  rules: [
    { test: /\.js$/, use: 'babel-loader', exclude: /node_modules/ },
  ]
]

/* 3 在 js 文件中 使用 JSX */
const dv = (
  <div title="标题" className="cls container">Hello JSX!</div>
)

/* 4 渲染 JSX 到页面中 */
ReactDOM.render(dv, document.getElementById('app'))

JSX的注意点

  • 注意 1: 如果在 JSX 中给元素添加类, 需要使用 className 代替 class
    • 类似:label 的 for属性,使用htmlFor代替
  • 注意 2:在 JSX 中可以直接使用 JS代码,直接在 JSX 中通过 {} 中间写 JS代码即可
  • 注意 3:在 JSX 中只能使用表达式,但是不能出现 语句!!!
  • 注意 4:在 JSX 中注释语法:{/* 中间是注释的内容 */}

因此上面那个复杂的原生JS语法就可以变成如下语法编写:

//JSX语法
ReactDOM.render(
  <div className="shopping-list">
      <h1>Shopping List for</h1>
      <ul>
        <li>Instagram</li>
        <li>WhatsApp</li>
      </ul>
  </div>
, document.getElementById('app'))

相关文章

  • 3.React中的JSX

    为什么要使用JSX呢?JSX又是什么呢?我们一步一步的了解。 为什么使用JSX 先看一个简单的例子,如下: Rea...

  • JSX

    参考文章: JSX 简介 重拾JSX JSX,了解一下? 在react中想将js当作变量引入到jsx中需要使用{}...

  • 一起学React--元素渲染和生命周期

    1. JSX JSX是Javascript的语法拓展,在React中通过JSX渲染元素 类似模版渲染,jsx可以通...

  • React笔记(核心概念部分)

    核心概念 1. JSX JSX是javascript的语法扩展,让我们可以在JS中编写常规html代码,在JSX中...

  • React(JSX 语法)

    一、JSX 语法 1.在 JSX 中嵌入表达式:在 JSX 中嵌入表达式,必须用{}将表达式括起来。 2.JSX ...

  • React基础使用部分

    init JSX JSX是Javascript的语法扩展,建议在React中配合使用JSX,可以描述UI交互,并且...

  • React基础学习总结

    一、JSX语法 1、花括号 { } 把任意的 [JavaScript 表达式]嵌入到 JSX 中 2、JSX可作表...

  • 学习React VirtualDom

    JSX 它被称为 JSX,是一个 JavaScript 的语法扩展。我们建议在 React 中配合使用 JSX。 ...

  • JSX核心语法

    JSX简介 这个html标签和js的结合体就是JSX,JavaScript的扩展语法。在React中JSX会被创建...

  • (React)认识React语法

    一、JSX语法 在React中,没有使用HTML标签来绘制UI,而是使用了JSX语法。 当然JSX语法中,也可以嵌...

网友评论

      本文标题:3.React中的JSX

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