react的學習

ReactDOM.render()

    ReactDOM.render(
          <h1>Hello,world</h1>,
          document.getElementById('example')
    );

  取到某一個dom,然后把上面的html放至dom中

JSX語法

  var names = ['Alice', 'Emily', 'Kate'];
  ReactDOM.render(
          <div>
           {
                     names.map(function (name) {
                              return <div>Hello, {name}</div>
                     });
            }
          <div>,
          document.getElementById('example')
  );

JSX允許直接在模板中插入JS變量,如果這個變量是一個數(shù)組,則會展開這個數(shù)組的所有成員

  var  arr = [
          <h1>Hello world</h1>
          <h2>React is awesome</h2>
  ];

  ReactDOM.render(
          <div>{arr}</div>
          document.getElementById('example');
  );

組件

React允許將代碼封裝成組件(componet), 像插入普通的HTML標簽一樣,在網(wǎng)頁中插入這個組件,React.createClass 方法就用于生成一個組件類

    var HelloMessage = React.createClass({
            render: function () {
                  return <h1>Hello {this.props.name}</h1>
          }
    });

    ReactDOM.render(
            <HelloMessage name="John" />
            document.getElementById('example')
    );

注意: 組件一個字母必須大寫,組件只能包含一個頂層標簽

組件的屬性可以再組件類的this.props對象上獲取,比如name屬性就可以通過this.props.name 讀取。

注意

添加屬性的時候
class屬性需要改成 className
for屬性要改成 htmlFor

this.props.children

this.props對象的屬性與組件的屬性一一對應,但是有個例外,就是this.props.children 屬性,他表示組件的所有子節(jié)點

    var NoteList = React.createClass({
          render: function () {
                return (
                        React.Children.map(this.props.children, function (child) {
                                return <li>{child}</li>
                        })
                );
         }
    });

    ReactDOM.render(
            <NoteList>
                    <span>HELLO</span>
                    <span>world</span>
            </NoteList>
    );


    this.props.children 的值有三種可能:
    1、當前組件沒有節(jié)點  就是 undefined
    2、當前組件只有一個節(jié)點,數(shù)據(jù)類型就是 object
    3、如果有多個子節(jié)點,       數(shù)據(jù)類型就是array

對于這種情況,React提供了一個方法, React.Children 來處理 this.props.children => 可以用React.Children.map來遍歷子節(jié)點,不需要擔心 this.props.children 的數(shù)據(jù)類型是哪種

PropTypes

var MyTitle = React.createClass({
    propTypes: {
            title: React.PropTypes.string.isRequired,
    },
    render: function () {
            return <h1>{this.props.title}</h1>
     }
  });

組件類的propTypes屬性,就是用來驗證組件實例的屬性是否符合要求

var data = 123;
     ReactDOM.render(
            <MyTitle title={data} />
             document.body
      );

getDefaultProps 可以設置組件屬性的默認值

獲取真正的DOM節(jié)點

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

React.Component

ES6

    class Greeting extends React.component {
              render () {
                  return <h1>Hello, {this.props.name}</h1>
              }
    }


  var CommentList = React.createClass({
          render: function () {
                  return (
                          <div className="commentList">
                                  Hello
                          </div>
                  );
          }
  });


HTML組件是正常的React組件,就和定義的一樣,JSX編譯器會自動重寫HTML標簽為 React.createElement(tagName);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 3. JSX JSX是對JavaScript語言的一個擴展語法, 用于生產(chǎn)React“元素”,建議在描述UI的時候...
    pixels閱讀 2,979評論 0 24
  • GUIDS 第一章 為什么使用React? React 一個提供了用戶接口的JavaScript庫。 誕生于Fac...
    jplyue閱讀 3,712評論 1 11
  • 原教程內容詳見精益 React 學習指南,這只是我在學習過程中的一些閱讀筆記,個人覺得該教程講解深入淺出,比目前大...
    leonaxiong閱讀 2,945評論 1 18
  • React Native是基于React的,在開發(fā)React Native過程中少不了的需要用到React方面的知...
    亓凡閱讀 1,582評論 1 4
  • 以下內容是我在學習和研究React時,對React的特性、重點和注意事項的提取、精練和總結,可以做為React特性...
    科研者閱讀 8,409評論 2 21

友情鏈接更多精彩內容