React 之 jsx

1)全称:javascript xml

2)react定义的一种类似xml的js扩展语法:js + xml

3)本质是React.createElement(component,props,...children)方法的语法糖

4)作用:用来简化创建虚拟dom

    a. 写法: var ele = <h1>hello jsx </h1>

    b. 注意1: 它不是字符串,也不是html/xml标签

    c. 注意2: 他最终产生的就是一个js对象

5)标签名任意:HTML标签或其他标签

jsx语法规则:

 1.定义虚拟dom时,不要写引号

 2.标签中混入js表达式要用{}

 3.样式的类名指定不要用class,要用className

 4.内联样式,要用style={{ key:value}}的形式去写  value若不是变量就要给字符串

 5.虚拟dom只有一个根标签

 6.标签必须闭合

 7.标签首字母

  (1)若小写字母开头,则将该标签转为html标签,若html中无该标签对应的同名元素,则报错

       (2)若大写字母开头,react就去渲染对应的组件,若组件没有定义,则报错

练习案例

<!-- 此处有一个容器 -->
  <div id="test"></div>
  <script src="js/react.development.js"></script>
  <script src="js/react-dom.development.js"></script>
  <script src="js/babel.min.js"></script>
  <script type="text/babel"> /* 一定要写babel */
    const data=['张三','李四','王五']
     const VDom  = (
     <ul>
        {
          data.map(item=>{
            return <li key={item}>{item}</li>
          })
        }
      </ul>
     )
     ReactDOM.render(VDom,document.getElementById('test'))
  </script>

扩展:

 xml 早期用于存储和传输数据

 但是随着发展,逐渐被json所取代

注意:

一定注意区分 [js语句] 与 [js表达式]

1.表达式:一个表达式会产生一个值,可以放在任何一个需要值的地方

   下面这些都是表达式

    a,  a+b  ,  arr.map()    ,function test() {} 返回的就是函数体

2.语句(代码):

    下面这些都是语句(代码)

       (1)if(){}

      (2)for(){}

       (3)switch(){case:}

常见错误;

object are not valid as a react child

解答:在react 中不能直接给对象,可以给数组

原文地址:https://www.cnblogs.com/zmztya/p/14623077.html