React笔记 #02# jsx语法规则&动态列表初步

饮水思源:https://www.bilibili.com/video/BV1wy4y1D7JT?p=5

jsx语法规则

1.定义虚拟DOM时,不要写引号。
2.标签中混入JS表达式时要用{}。
3.样式的类名指定不要用class,要用className.
4.内联样式,要用sty1e={{key:value}}的形式去写。
5.只有一个根标签
6.标签必须闭合
7.标签首字母
(1).若小写字母开头,则将改标签转为html中同名元素,若htm1中无该标签对应的同名元素,则报错。
(2).若大写字母开头,react就去渲染对应的组件,若组件没有定义,则报错。

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8" />
  <title>Add React in One Minute</title>
</head>

<body>

  
  <div id="test"></div>
  <!-- 加载 React。-->
  <!-- 注意: 部署时,将 "development.js" 替换为 "production.min.js"。-->
  <script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
  <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>

  <!-- Load Babel -->
  <!-- v6 <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> -->
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

  <script type="text/babel">

    let 容器 = document.querySelector("#test");

    let 数据 = '数据要用花括号括起来';
    
    let style不能写字符串 = {
      color: 'pink',
      fontSize: '54px',
    };

    let class要用className因为class是关键字 = 'title';

    let 虚拟DOM = (
      <div className={class要用className因为class是关键字} id={数据} style={style不能写字符串}>{数据}</div>      
    )


    ReactDOM.render(虚拟DOM, 容器);
  </script>
</body>

</html>

运行结果:

<div id="test"><div class="title" id="数据要用花括号括起来" style="color: pink; font-size: 54px;">数据要用花括号括起来</div></div>

动态列表初步

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8" />
  <title>Add React in One Minute</title>
</head>

<body>
  <div id="test"></div>
  <script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
  <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
  <!-- Load Babel -->
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

  <script type="text/babel">
    let 容器 = document.querySelector("#test");
    
    let list = ["data1", "data2", "data3"]

    let 虚拟DOM = (
      <ul>
        <li>data0</li>
        {list.map(x => <li>{x}</li>)}
      </ul>      
    )

    ReactDOM.render(虚拟DOM, 容器);
  </script>
</body>
</html>

控制台不高兴,列表元素必须有唯一的key:

暂时改成这样:

    let 虚拟DOM = (
      <ul>
        <li >data0</li>
        {list.map((x, i) => <li key={i}>{x}</li>)}
      </ul>      
    )
原文地址:https://www.cnblogs.com/xkxf/p/15658705.html