1.基本使用

全称: JavaScript XML
react定义的一种类似于XML的JS扩展语法: XML+JS
作用: 用来创建react虚拟DOM(元素)对象

  1. var ele = <h1>Hello JSX!</h1>

注意1: 它不是字符串, 也不是HTML/XML标签
注意2: 它最终产生的就是一个JS对象

标签名任意: HTML标签或其它标签 标签属性任意: HTML标签属性或其它

**基本语法规则:**

遇到 <开头的代码, 以标签的语法解析: html同名标签转换为html同名元 素, 其它标签需要特别解析 遇到以 { 开头的代码,以JS语法解析: 标签中的js代码必须用{ }包含

babel.js**的作用:**

  1. 浏览器不能直接解析JSX代码, 需要babel转译为纯JS的代码才能运行
  2. 只要用了JSX,都要加上type="text/babel", 声明需要babel来处理

2.虚拟dom

语法**: ReactDOM.render(virtualDOM, containerDOM)
作用: **将虚拟DOM元素渲染到页面中的真实容器DOM中显示
参数说明

参数一: 纯js或jsx创建的虚拟dom对象 参数二: 用来包含虚拟DOM元素的真实dom元素对象(一般是一个div)

3.创建虚拟dom

方式一:纯js方式

  1. <script type="text/javascript">
  2. const txt1="hello world";
  3. const txt2="hello"
  4. // 创建一个虚拟dom
  5. const vDom1=React.createElement('h1',{id:txt2.toLowerCase()},txt1.toUpperCase())
  6. // 渲染虚拟dom
  7. ReactDOM.render(vDom1,document.getElementById("test1"))
  8. </script>

方式二:jsx方式

  1. <script type="text/babel">
  2. const txt3="hello world";
  3. const txt4="hello"
  4. //创建一个虚拟dom
  5. const vDom2=<h1 id={txt4.toUpperCase()}>{txt3.toLowerCase()}</h1>
  6. //渲染虚拟dom
  7. ReactDOM.render(vDom2,document.getElementById("test2"))
  8. </script>

4.案例

如何将一个数据数组转化为一个标签数组

  1. <div id="list">
  2. </div>
  3. <script src="../js/react.development.js"></script>
  4. <script src="../js/react-dom.development.js"></script>
  5. <script src="../js/babel.min.js"></script>
  6. <script type="text/babel">
  7. const names=["jquery","node","html5","vue","react"]
  8. const ul=(
  9. <ul>
  10. {names.map((item,index)=>{
  11. return <li key={index}>{item}</li>
  12. })}
  13. </ul>
  14. )
  15. ReactDOM.render(ul,document.getElementById("list"))
  16. </script>

image.png
image.png