react入門(1)


這篇文章也不能算教程咯,就算是自己學習整理的筆記把。

 

一、react基本介紹

關於react一些相關的簡介、優勢之類的,可以去官網看一下。

 

案例1:

 新建一個index.html文件,文件內容如下

<!DOCTYPE html>
<html>
<head>
  <title>react入門</title>
  <meta charset="utf-8">
</head>
<body>
  <div id="example"></div>
  <script src="https://npmcdn.com/react@15.3.1/dist/react.min.js"></script>
  <script src="https://npmcdn.com/react-dom@15.3.1/dist/react-dom.min.js"></script>
  <script src="https://npmcdn.com/babel-core@5.8.38/browser.min.js"></script>
  <script type="text/babel">
    ReactDOM.render(
      <div>你好</div>,
      document.getElementById('example')
    )
  </script>
</body>
</html>

  

效果如下

 

下面來分析一下

在頁面加載前,先依次加入react.min.js、react-dom.min.js、browser.min.js三個文件。

 

react.min.js

是react的核心庫,定義虛擬dom模型,以及react如何做一些數據的更新,支持組件化算法等等都在這個js里面

react-dom.js

 是提供與 DOM 相關的功能

Browser.js 

它作用是將JSX語法轉為JavaScript語法(就是將我們用jsx方式寫的html結構,轉化為可執行的html代碼)

 

如果想下載這三個文件到本地的,可以直接復制鏈接去瀏覽器打開,右鍵另存就行了,如下圖

 

 

 在react里,為了兼容jsx語言,必須在需要jsx語言的<script>里加入type=”text/babel”

 

 

ReactDOM.render是React的最基本方法,用戶將模板轉換成HTML語言,並插入指定的DOM節點中。

 

 上面說的太官方,如果不能理解的我們可以再看一下效果圖,注意我用紅色框勾選出來的部分

簡單點說,就是將我們寫的<div>你好</div>,插入到id名為example的div里面去

 

二、JSX 語法

關於jsx語法,我推薦可以先看一下這篇文章http://www.css88.com/archives/5632?utm_source=tuicool&utm_medium=referral

在react里面,我們經常會看到jsx語法,如上圖所示(案例1),看上去感覺就是在js里面直接寫了html標簽,更准確的說,應該是xml標簽

 

案例2:

 

<!DOCTYPE html>
<html>
<head>
  <title>react入門</title>
  <meta charset="utf-8">
</head>
<body>
  <div id="example"></div>
  <script src="https://npmcdn.com/react@15.3.1/dist/react.min.js"></script>
  <script src="https://npmcdn.com/react-dom@15.3.1/dist/react-dom.min.js"></script>
  <script src="https://npmcdn.com/babel-core@5.8.38/browser.min.js"></script>
  <script type="text/babel">
    ReactDOM.render(
      <div>
        <label>用戶名</label>
        <input type="text" />
        <br />
        <button>登錄</button>
      </div>,
      document.getElementById('example')
    )
  </script>
</body>
</html>

 

效果如下:

這里有幾個注意的地方

1. jsx語法,xml數據存儲格式,因此在寫標簽的時候,標簽必須被正確地嵌套,標簽必須被關閉,標簽注意大小寫

值得一提的是,有些小伙伴在寫html代碼的時候,在寫空標簽的時候不寫“/”。例如<input />就寫成<input>,<br />就寫成<br>。在jsx里面,“/”一定要寫,不然就會報錯哦

2. jsx語法規范,只有一個開頭節點和一個結尾節點,如下圖所示

如果像下圖這樣寫,就是錯誤的

 3. 注釋的寫法{/**被注釋的內容**/} (如下所示)

ReactDOM.render(
    <div>
        {/*在這里寫注釋*/}
        <label>用戶名</label>
        <input type="text" />
        <br />
        <button>登錄</button>
    </div>,
    document.getElementById('example')
)  

 

關於注釋:

在react里面,有三種注釋可以用

//注釋方式一
/*注釋方式二*/
{/*注釋方式三*/}

說的簡單易懂一點,我們平時在寫html代碼的時候,用到的注釋是<!--注釋-->。而在react里面,我們寫html代碼的時候,注釋就要用{/*注釋*/}這種方式,其他兩種方式都會報錯。

 

三、組件

先來貼一段概念

React 允許將代碼封裝成組件(component),然后像插入普通 HTML 標簽一樣,在網頁中插入這個組件。React.createClass 方法就用於生成一個組件類

 

案例3:

<!DOCTYPE html>
<html>
<head>
  <title>react入門</title>
  <meta charset="utf-8">
</head>
<body>
  <div id="example"></div>
  <script src="https://npmcdn.com/react@15.3.1/dist/react.min.js"></script>
  <script src="https://npmcdn.com/react-dom@15.3.1/dist/react-dom.min.js"></script>
  <script src="https://npmcdn.com/babel-core@5.8.38/browser.min.js"></script>
  <script type="text/babel">
    //聲明一個組件
    var Login = React.createClass({
      render:function(){
        return(
          <div>
            <label>用戶名</label>
            <input type="text" />
            <br />
            <button>登錄</button>
          </div>
        )
      }
    });
    //組件渲染在頁面上
    ReactDOM.render(
      <Login />,
      document.body
    )
  </script>
</body>
</html>

 

效果如下

 

注意,我這里是直接插入到body里面的,如下圖所示

而 案例1 和 案例2 都是寫的插入到id名為example的div中去,如下圖所示

可以對比一下效果圖,發現寫在body里面的 <div id="example"></div> 這個沒有了,script標簽也沒有了,這里值得我們注意一下。

 

下面再回到組件上面來說

 

ReactDOM.render(param1,param2)

Param1<組件名稱/> 或者<組件名稱></組件名稱> (<Login />或者<Login></Login>)

Param2:組件被渲染的位置 (body)。

 

 

案例4:組件可以嵌套

<!DOCTYPE html>
<html>
<head>
  <title>react入門</title>
  <meta charset="utf-8">
</head>
<body>
  <div id="example"></div>
  <script src="https://npmcdn.com/react@15.3.1/dist/react.min.js"></script>
  <script src="https://npmcdn.com/react-dom@15.3.1/dist/react-dom.min.js"></script>
  <script src="https://npmcdn.com/babel-core@5.8.38/browser.min.js"></script>
  <script type="text/babel">
    var User = React.createClass({
      render:function(){
        return(
          <div>
            <label>用戶名</label>
            <input type="text" />
          </div>
        )
      }
    });
    var Login = React.createClass({
      render:function(){
        return (
          <div>
            <User />
            <button>登錄</button>
          </div>
        )
      }
    });
    ReactDOM.render(
      <Login />,
      document.getElementById('example')
    )
  </script>
</body>
</html>

 

 

先寫了User這個組件,然后把User這個組件寫在了Login里面,最后把Login渲染在頁面上

效果圖如下

 

四、React的CSS寫法

案例5:列舉幾種css的寫法

<!DOCTYPE html>
<html>
<head>
  <title>react入門</title>
  <meta charset="utf-8">
  <style type="text/css">
    .tab{background:yellow;}
  </style>
</head>
<body>
  <div id="example"></div>
  <script src="https://npmcdn.com/react@15.3.1/dist/react.min.js"></script>
  <script src="https://npmcdn.com/react-dom@15.3.1/dist/react-dom.min.js"></script>
  <script src="https://npmcdn.com/babel-core@5.8.38/browser.min.js"></script>
  <script type="text/babel">
    var user = {
      width:"100px",
      display:"block",
      margin:"10px 0"
    }
    var Login = React.createClass({
      render:function(){
        var box = {
          background:"lightblue",
          height:"100px",
        };
        return (
          <div style={box}>
            <label className="tab">用戶名</label>
            <input style={user} type="text" placeholder="用戶名" />
            <button style={this.styles.btn}>登錄</button>
          </div>
        )
      }
    });
    Login.prototype.styles = {/*原型鏈方法*/
      btn:{
        "background":"grey",
        "color":"white"
      }
    }
    ReactDOM.render(
      <Login />,
      document.getElementById('example')
    )
  </script>
</body>
</html>

 

 解析如下

 

效果如下所示

這里值得注意的是在react里面我們要將class寫成className

上面我一共寫了4個css的寫法,可以看到效果圖里面,除了方法2以外,其他幾個在效果圖里呈現出來的都是行內樣式

 

總結

這次就講這么多吧,關於事件、props等等后面再來講把。下面總結幾個要注意的地方:

1. 頁面加載前,先依次序加入react.min.js、react-dom.min.js和browser.min.js

2. jsx語言的<script>里加入type=”text/babel”

3. 聲明組件時,注意組件名首字母要大寫

4. Jsx語法,xml數據存儲格式,注意jsx語法規范,只有一個開頭節點和一個結尾節點,標簽書寫要規范

5. jsx中注釋用 {/**被注釋的內容**/}

6. class要寫成className

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM