react入門知識(shí)點(diǎn)

1、使用

<!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">
      // ** Our code goes here! **
    </script>
</body>
</html>

最后一個(gè)<script>的type屬性為text/babel,這樣可以在其中應(yīng)用jsx語(yǔ)法。


2、JSX語(yǔ)法

遇到<開頭就用HTML規(guī)則解析;遇到{開頭,就用javascript解析。

3、組件

  var HelloMessage = React.createClass({
     render: function() {
         return <h1>Hello {this.props.name}</h1>;
     }
  });
  ReactDOM.render(
    <HelloMessage name="John" />,
    document.getElementById('example')
  );`
  • HelloMessage就是一個(gè)組件類,組件類必須以大寫字母開頭,必須有自己的render方法,用于輸出組件,還必須只能包含一個(gè)頂層標(biāo)簽。

  • 組件類可以在使用時(shí)可以加入任意屬性,其加入的屬性可以在組件類內(nèi)部的this.props對(duì)象上獲取到。

  • this.props.children屬性。它表示組件的所有子節(jié)點(diǎn)

    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.body
    );
    

如果當(dāng)前組件沒(méi)有子節(jié)點(diǎn),this.props.children就是undefined;如果有子節(jié)點(diǎn),數(shù)據(jù)類型就是object;如果有多個(gè)子節(jié)點(diǎn),數(shù)據(jù)類型就是array。React提供了一個(gè)方法React.Children直接處理this.props.children。

  • PropTypes屬性,驗(yàn)證組件實(shí)例的屬性是否符合要求。在組件類中定義屬性:

      propsTypes: {
        title:React.PropTypes.string.isRequired
      }
    

如上定義這樣的屬性后,在使用組件時(shí),就必須在組件上加入一個(gè)title屬性,且其類型時(shí)字符串類型,才能通過(guò)驗(yàn)證。 getDefaultProps方法用來(lái)設(shè)置組件屬性的默認(rèn)值。

4、獲取真實(shí)DOM節(jié)點(diǎn)

組件并不是節(jié)點(diǎn),知識(shí)一種數(shù)據(jù)結(jié)構(gòu),叫做虛擬DOM。只有插入文檔之后,才會(huì)變成真實(shí)的DOM。根據(jù)React的設(shè)計(jì),所有DOM變動(dòng),都會(huì)在虛擬DOM上發(fā)生,然后在將實(shí)際發(fā)生的變動(dòng)反應(yīng)在真實(shí)的DOM上,這種算法就做DOM diff
要從組件獲取真實(shí)的DOM節(jié)點(diǎn),這是就需要ref屬性

  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')
    );

this.refs.[refName]就會(huì)返回這個(gè)真實(shí)的DOM節(jié)點(diǎn)。

5、this.state

組件類中getInitialState方法用于定義初始狀態(tài),這個(gè)對(duì)象可以通過(guò)this.state屬性讀取,同時(shí)this.setState方法可以修改狀態(tài)值,修改狀態(tài)值會(huì)自動(dòng)調(diào)用render方法渲染組件
寫一個(gè)簡(jiǎn)單的表單:

    var Input = React.createClass({
         getInitialState: function(){//設(shè)置初始值
            return {value:'Hello!'};
          },
          handleChange: function(evt){
             this.setState({value: evt.target.value})
          },
          render: function(){
              var value = this.state.value;
              return (
                  <div>
                        <input type="text" value={value} onChange={this.handleChange} />
                        <p>{value}</p>
                  </div>
              );
          }
    });
    ReactDOM.render(<Input/>,document.body)

6、生命周期

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原教程內(nèi)容詳見精益 React 學(xué)習(xí)指南,這只是我在學(xué)習(xí)過(guò)程中的一些閱讀筆記,個(gè)人覺(jué)得該教程講解深入淺出,比目前大...
    leonaxiong閱讀 2,940評(píng)論 1 18
  • 現(xiàn)在最熱門的前端框架,毫無(wú)疑問(wèn)是 React 。上周,基于 React 的 React Native 發(fā)布,結(jié)果一...
    sakura_L閱讀 483評(píng)論 0 0
  • 每個(gè)人都有 自己的小秘密 在未知的城市里 有一個(gè)獨(dú)屬自己的地方 可以讓自己孤獨(dú)、悲傷 偶爾在那落下眼淚 抬手拭去 ...
    煙酒醉余生閱讀 277評(píng)論 2 3
  • 找一座城 生根 等一棵樹 開花 邂逅一個(gè)姑娘 造人
    簡(jiǎn)村小吹閱讀 201評(píng)論 21 13

友情鏈接更多精彩內(nèi)容