react學習筆記2

來源:互聯網
上載者:User

標籤:

1.build檔案介紹

(1)react.js  是react的核心庫

(2)react-dom.js  提供與DOM相關功能

(3)browser.js  是將JSX文法轉為javascript文法

 

2.組件的繼續學習

  注意:組件的第一個字母必須大寫,否則會報錯。組件的用法和html標籤完全一致,可以任意加入屬性。組件的屬性,可以通過 this.props 對象上擷取。

 

3.this.props.children

  

  this.props.children 有三種可能 :

             a.當前組件沒有位元組點,返回undefined   ;

             b.如果有一個位元組點,資料類型是object  ;

             c.資料類型是array

  

  (1)代碼預覽

  

  (2)遊覽器裡效果

  

  (3)源碼  

<!DOCTYPE html><html>  <head>    <meta charset="UTF-8" />    <title>Hello React!</title>    <script src="../build/react.js"></script>    <script src="../build/react-dom.js"></script>    <script src="../build/browser.min.js"></script>  </head>  <body>    <div id="example"></div>    <script type="text/babel">      var NotesList = React.createClass({      render: function() {        return (          <ol>          {            React.Children.map(this.props.children, function (child) {              return <li>{child}</li>;            })          }          </ol>        );      },      });      ReactDOM.render(        <NotesList>          <span>hello</span>          <span>world</span>        </NotesList>,        document.getElementById(‘example‘)      );    </script>  </body></html>

 

  

4.PropTypes

  組件類的 PropType 屬性,就是用來驗證組件執行個體的屬性是否符合要求。

 

  (1)代碼預覽

  

 

  (2)遊覽器裡效果

  

  (3)源碼

  

<!DOCTYPE html><html>  <head>    <meta charset="UTF-8" />    <title>Hello React!</title>    <script src="../build/react.js"></script>    <script src="../build/react-dom.js"></script>    <script src="../build/browser.min.js"></script>  </head>  <body>    <div id="example"></div>    <script type="text/babel">    var MyTitle = React.createClass({      propTypes: {        title: React.PropTypes.string.isRequired,      },      render: function() {         return <h1> {this.props.title} </h1>;       }    });    var data = 123;    ReactDOM.render(      <MyTitle title={data} />,      document.body    );    </script>  </body></html>

 

 

 

5.擷取真實的dom節點

  組件並不是真實的dom節點,而是存在於記憶體中的一種資料結構,叫做virtual dom。只有插入文檔中才會變成真實的dom 。根據react的設計,所有的dom的變動,都現在虛擬dom上發生,然後再將實際發生變動的部分,反映在真實的dom上,這種演算法叫做dom diff,它可以極大提高網頁的效能。

  (1)代碼預覽

  

  (2)遊覽器效果如下:

  

  (3)源碼

  

<!DOCTYPE html><html>  <head>    <meta charset="UTF-8" />    <title>Hello React!</title>    <script src="../build/react.js"></script>    <script src="../build/react-dom.js"></script>    <script src="../build/browser.min.js"></script>  </head>  <body>    <div id="example"></div>    <script type="text/babel">    var MyComponent = React.createClass({      handleClick: function() {        this.refs.myTextInput.focus();      },      render: function() {        return (          <div>            <input type="text" ref="myTextInput" />            <input type="button" value="Focus the text input" onClick={this.handleClick} />          </div>        );      }    });    ReactDOM.render(      <MyComponent />,      document.getElementById(‘example‘)    );    </script>  </body></html>

 

 

 

6.this.state

  this.state 和 this.props 都是用來描述組件的特性。this.props 表示那些一旦定義,就不再改變的特性,而  this.state 是隨著使用者而產生的熱性。

  

  (1)代碼預覽

  

  (2)遊覽器裡效果(點擊的時候會切換)

  

  

  (3)源碼

<!DOCTYPE html><html>  <head>    <script src="../build/react.js"></script>    <script src="../build/react-dom.js"></script>    <script src="../build/browser.min.js"></script>  </head>  <body>    <div id="example"></div>    <script type="text/babel">      var LikeButton = React.createClass({        getInitialState: function() {          return {liked: false};        },        handleClick: function(event) {          this.setState({liked: !this.state.liked});        },        render: function() {          var text = this.state.liked ? ‘like‘ : ‘haven\‘t liked‘;          return (            <p onClick={this.handleClick}>              You {text} this. Click to toggle.            </p>          );        }      });      ReactDOM.render(        <LikeButton />,        document.getElementById(‘example‘)      );    </script>  </body></html>

 

 

7.表單

  

react學習筆記2

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.