藍鷗React Native零基礎入門到項目實戰 state

藍鷗React Native零基礎入門到項目實戰 Hello React

http://edu.csdn.NET/course/detail/3129

state

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>

    <!-- react.js是React的核心庫 -->
    <script src="./build/react.js" charset="utf-8"></script>
    <!-- react-dom.js的作用是提供與DOM相關的功能 -->
    <script src="./build/react-dom.js" charset="utf-8"></script>
    <!-- browser.min.js的作用是將JSX語法轉換成JavaScript語法 -->
    <script src="./build/browser.min.js" charset="utf-8"></script>
    <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.min.js" charset="utf-8"></script> -->

  </head>
  <body>
    <!-- React渲染的模板內容會插入到這個DOM節點中,作爲一個容器 -->
    <div id="container">

    </div>

  </body>
  <!-- 在React開發中,使用JSX,跟JavaScript不兼容,在使用JSX的地方,要設置type:text/babel -->
  <!-- babel是一個轉換編譯器,ES6轉成可以在瀏覽器中運行的代碼 -->
  <script type="text/babel">

    // 在此處編寫React代碼

    /*
      事件處理

      react中的事件名稱,首字母小寫,駝峯命名法

      案例: 定義一個組件,組件中包含一個button,給button綁定onClick事件
     */

    // var MyButton = React.createClass({
    //   handleClick: function() {
    //     alert("點擊按鈕觸發的效果");
    //   },
    //   render: function() {
    //     return (
    //       <button onClick={this.handleClick}>{this.props.buttonTitle}</button>
    //     );
    //   }
    // });
    //
    // ReactDOM.render(
    //   <MyButton buttonTitle="按鈕" />,
    //   document.getElementById("container")
    // );
    //
    //

    /*
      state 狀態
      props
      組件自身的屬性

      this.state
     */

    // 需求:創建一個CheckButton的組件,包含一個checkbox類型<input>
    // 複選框在選中和未選中兩種狀態下會顯示不同的文字。即根據狀態渲染

    var CheckButton = React.createClass({
      // 定義初識狀態
      getInitialState: function() {
        return {
          // 在這個對象中設置的屬性,將會存儲在state中
          // 默認狀態,未選中
          isCheck: false
        }
      },
      // 定義事件綁定的方法
      handleChange: function() {
        // 修改狀態值,通過this.state讀取設置的狀態值
        this.setState({
          isCheck: !this.state.isCheck
        });
      },

      render: function() {
        // 根據狀態值,設置顯示的文字
        // 在JSX語法中,不能直接使用if,使用三目運算符
        var text = this.state.isCheck ? "已選中" : "未選中";

        return (
          <div>
            <input type="checkbox" onChange={this.handleChange} />
            {text}
          </div>
        );

      }
    });

    ReactDOM.render(
      <CheckButton />,
      document.getElementById("container")
    );

    // 當state發生變化時,會調用組件內部的render方法

  /*
      需求:定義一個組件,將用戶在輸入框內輸入的內容進行實時顯示

      分析:
      組件與用戶交互過程中,存在狀態的變化,即輸入框的值
   */

    var Input = React.createClass({
      getInitialState: function() {
        return {
          value: "請輸入"
        };
      },
      handleChange: function(event) {
        // 通過event.target.value讀取用戶輸入的值
        this.setState({
          value: event.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.getElementById("container")
  );





  </script>

</html>



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章