1. 程式人生 > 其它 >2、React:React的 JSX 語法規則介紹

2、React:React的 JSX 語法規則介紹

技術標籤:Reactreactjsjavascript

文章目錄

JSX定義

  • 全稱JavaScript XML
  • 類似React定義的一種類似於XMLJS擴充套件語法:JS+XML
  • 本質:是React.createElement(component,props,...children)方法的語法糖
  • 作用:用來簡化建立虛擬 DOM
  • 標籤名任意::HTML標籤或其它標籤
  • 標籤屬性任意HTML標籤屬性或其它
  • 參考網站網站

JSX語法規則

  • 定義虛擬DOM時,不要寫引號
  • 標籤中如果需要混入JS表示式時,需要使用{ }
	<script type="text/babel"
>
const data = 'Hello,React-JSX' //1.建立虛擬DOM const VDOM = ( <h1 id="jsx"> <span>{data}</span> </h1> ) //2.渲染虛擬DOM到頁面 ReactDOM.render(VDOM,document.getElementById('test')) </script
>
  • 樣式的類名指定不要使用class,要用className
<head>
    <style>
        .title{
            background-color: aqua;
            width: 500px;
        }
    </style>
</head>

<body>
    <!-- 準備好一個"容器" -->
    <div id="test"></div>

    <script type
="text/babel">
//1.建立虛擬DOM const VDOM = ( <h1 id="jsx" className='title'> <span>Hello,React-JSX</span> </h1> ) //2.渲染虛擬DOM到頁面 ReactDOM.render(VDOM,document.getElementById('test')) </script> </body>
  • 內聯樣式(在JSX語法中使用),要使用style={{key:value}}的形式去寫。
    <script type="text/babel">
        //1.建立虛擬DOM
        const VDOM = (
            <h1 id="jsx" className='title'>
                <span style={{color:'white',fontSize:'50px'}}>Hello,React-JSX</span>
            </h1>
        )
        //2.渲染虛擬DOM到頁面
        ReactDOM.render(VDOM,document.getElementById('test'))
    </script>
  • JSX中只能有一個根標籤
  • 標籤必須閉合<span></span>
  • 標籤首字母規則
    • 如果是小寫字母開頭,則將該標籤轉為html中同名的元素,若html中無該標籤對應的同名元素,則報錯
    • 如果是大寫字母開頭,React就去渲染對應的元件,若元件沒有定義,則報錯

JSX練習

<!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>Document</title>
</head>
<body>
    <!-- 準備好一個"容器" -->
    <div id="test"></div>

    <!-- 引入react核心庫 -->
    <script type="text/JavaScript" src="../js/react.development.js"></script>
    <!-- 引入react-dom,用於支援react操作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>
 
    <script type="text/babel">
        //模擬一些資料
        const data = ['學習的第一天','學習的第二天','學習的第三天']
        //1.建立虛擬DOM
        const VDOM = (
            <div>
                <h1>學習React很開心</h1>
                <ul>
                    {
                        data.map((item,index)=>{
                            return <li key={index}>{item}</li>
                        })
                    }
                </ul>
            </div>
        )
        //2.渲染虛擬DOM到頁面
        ReactDOM.render(VDOM,document.getElementById('test'))
    </script>
</body>
</html>

效果

在這裡插入圖片描述

總結

  1. JSX中可以巢狀多個HTML標籤,只需要使用div元素包裹起來即可
    <script type="text/babel">
        //1.建立虛擬DOM
        const VDOM = (
            <div>
                <h1 id="jsx" className='title'>
                <span style={{color:'white',fontSize:'50px'}}>Hello,React-JSX</span>
            </h1>
            <input type="text"/>
            </div>
        )
        //2.渲染虛擬DOM到頁面
        ReactDOM.render(VDOM,document.getElementById('test'))
    </script>
  1. JSX中使用 JavaScript表示式。表示式寫在花括號 {} 中。

  2. JSX中不能使用 if else 語句,但可以使用 conditional (三元運算) 表示式來替代。

  3. React推薦使用內聯樣式。可以使用 camelCase(駝峰) 語法來設定內聯樣式.。React 會在指定元素數字後自動新增px

  4. JSX允許在模板中插入陣列,陣列會自動展開所有成員

    <script type="text/babel">
        var arr = [
            <h1>張三</h1>,
            <h1>李四</h1>
        ]
        //1.建立虛擬DOM
        const VDOM = (
            <div>
                <h1>{arr}</h1>
            </div>
        )
        //2.渲染虛擬DOM到頁面
        ReactDOM.render(VDOM,document.getElementById('test'))
    </script>

學習網址:網址