<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      React學習筆記。

        有段時間沒寫博客了,最近這段時間有點說不出的苦,雖然說年輕的時候該多出去經歷些事,但每次找工作東跑西跑,坐公交坐地鐵浪費了我太多時間,我感覺到這是一種浪費,對生命的浪費。所以很想盡快找到一份工作,去努力去奮斗。這兩天周末,沒有什么招聘,在租房里學習了React框架。因為很多公司技術要求都有這個框架,想學習學習提高一些新技術的把握,以后如果需要可以深入學習一下。雖然自己寫博客水平很差,但還是得堅持寫下去。

        學習過程主要看了阮一峰的React入門,在git上下了他的教程,然后把每個教程都自己跟著敲了一遍,最后又根據記憶自己動手從頭根據自己的理解來敲,這樣效率很高,不得不說這樣的學習方法很實用,這也是這幾年自學領悟的方法。下一個學習目標,Zepto框架。嗯。移動端對于我來說是個問題,現在有必要攻破它。

             1.前言

        如果大面積的操作 DOM,性能會是一個很大的問題,所以 React 實現了一個 虛擬 DOM ,組件 DOM 結構就是映射到這個虛擬 DOM 上,React 在這個虛擬 DOM 上實現了一個 diff 算法,當要更新組件的時候,會通過 diff 尋找到要變更的 DOM 節點,再把這個修改更新到瀏覽器實際的 DOM 節點上,所以實際上不是真的渲染整個 DOM 樹。這個虛擬 DOM 是一個純粹的 JS 數據結構,所以性能會比原生 DOM 快很多。

        Virtual DOM 是一個模擬 DOM 樹的 JavaScript 對象。 React 使用 Virtual DOM 來渲染 UI,當組件狀態 state 有更改的時候,React 會自動調用組件的 render 方法重新渲染整個組件的 UI。React 主要的目標是提供一套不同的, 高效的方案來更新 DOM.不是通過直接把 DOM 變成可變的數據, 而是通過構建 “Virtual DOM”, 虛擬的 DOM, 隨后 React 處理真實的 DOM 上的更新來進行模擬相應的更新。

             2.依賴包

        要想使用React需要引入下面這3個js文件,其中react.js 是 React 的核心庫,react-dom.js 是提供與 DOM 相關的功能,browser.js 的作用是將 JSX 語法轉為 JavaScript 語法,這一步很消耗時間,實際上線的時候,應該將它放到服務器完成。

          <script src="../build/react.js"></script>
          <script src="../build/react-dom.js"></script>
          <script src="../build/browser.min.js"></script>
      

        可以說React和JSX沒有必定的聯系,沒有JSX的React也可以單獨運行,但你還是會發現,這兩者就是雙胞胎嘛。一般都會一起使用。

        下面我們來看一下JSX在React中的使用。

        3.JSX   

         先來看一個例子。  

          var arr = ["yh1","yh2","yh3"];
            ReactDOM.render(
            <div>
            {                               //使用JS規則解析
              arr.map(function(item){
                return <p>fuck,{item}</p>
              })
            }
            </div>,
            document.body
            )
      

        HTML 語言直接寫在 JavaScript 語言之中,不加任何引號,這就是JSX語法。解析過程為遇到 HTML 標簽(以 < 開頭),就用 HTML 規則解析;遇到代碼塊(以 { 開頭),就用 JavaScript 規則解析。

        4.組件

        React中感覺最厲害的地方就是組件了,具體細節大家可以看阮一峰老師的博客,這里我記錄自己需要記憶的部分。

        React 提供一個工具方法 React.Children 來處理 this.props.children 。我們可以用 React.Children.map 來遍歷子節點,而不用擔心 this.props.children 的數據類型是 undefined還是 object

        其中組件類this.props可以獲取標簽中屬性。

      var NotesList = React.createClass({
        render: function() {
          return (
            <ol>
            {
              React.Children.map(this.props.children, function (child) {   //this.props.children = [<span>hello</span>,<span>world</span>];
                return <li>{child}</li>;
              })
            }
            </ol>
          );
        }
      });
      
      ReactDOM.render(
        <NotesList>
          <span>hello</span>
          <span>world</span>
        </NotesList>,
        document.body
      );
      

        組件的屬性可以接受任意值,字符串、對象、函數等等都可以。組件類的PropTypes屬性,就是用來驗證組件實例的屬性是否符合要求.

        

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

        上面例子中propTypes規定組件中必須有一個title屬性,而且這個屬性必須是string類型,當傳入數值時就會報錯,上訴代碼會報錯。

         getDefaultProps 方法可以用來設置組件屬性的默認值。

        

      var MyTitle = React.createClass({
        getDefaultProps : function () {
          return {
            title : 'Hello World'
          };
        },
      
        render: function() {
           return <h1> {this.props.title} </h1>;
         }
      });
      
      ReactDOM.render(
        <MyTitle />,
        document.body
      );
      

        組件中的state狀況我掌握得比較多,是一個非常有用的東西,希望大家熟練使用,因為我比較熟練,這里就不記錄了。

        下面是獲取表單內容時使用event.target.value。這里沒有其他方法,只能靠記憶。

      var Input = React.createClass({
        getInitialState: function() {
          return {value: 'Hello!'};
        },
        handleChange: function(event) {
          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.body);
      

        下面是React中比較重要的一個東西,組件的生命周期。

        5.組件的生命周期

        組件的生命周期分成三個狀態:

      • Mounting:已插入真實 DOM
      • Updating:正在被重新渲染
      • Unmounting:已移出真實 DOM

        React 為每個狀態都提供了兩種處理函數,will 函數在進入狀態之前調用,did 函數在進入狀態之后調用,三種狀態共計五種處理函數。

      • componentWillMount()
      • componentDidMount()
      • componentWillUpdate(object nextProps, object nextState)
      • componentDidUpdate(object prevProps, object prevState)
      • componentWillUnmount()

        此外,React 還提供兩種特殊狀態的處理函數。

      • componentWillReceiveProps(object nextProps):已加載組件收到新的參數時調用
      • shouldComponentUpdate(object nextProps, object nextState):組件判斷是否重新渲染時調用

        

      var Hello = React.createClass({
        getInitialState: function () {
          return {
            opacity: 1.0
          };
        },
      
        componentDidMount: function () {
          this.timer = setInterval(function () {
            var opacity = this.state.opacity;
            opacity -= .05;
            if (opacity < 0.1) {
              opacity = 1.0;
            }
            this.setState({
              opacity: opacity
            });
          }.bind(this), 100);
        },
      
        render: function () {
          return (
            <div style={{opacity: this.state.opacity}}>
              Hello {this.props.name}
            </div>
          );
        }
      });
      
      ReactDOM.render(
        <Hello name="world"/>,
        document.body
      );
      

        附加一個例子來記憶這個componentDidMount方法,當組件轉化為真實DOM后調用的方法,控制透明度,這個方法我獨立寫過幾次,前2次都失敗了,仔細檢查之后發現<div style={{opacity:this.state.opacity}}>這里容易出錯。大家需要注意注意。

        結尾

       到這里呢,react框架的筆記記錄完成,上面記錄的東西以后都需要經常反復查看,然后沒事可以自己用React寫一些東西玩玩,嗯,以后每次學習一些新知識都會記錄一下,這樣呢方便管理自己的知識線,以后如果有需要也能快速的回憶。

        這段時間雖然很難受,但還是磨練了我的耐性,我知道我會有一個美好的未來,我知道我以后一定會成為一個對社會有用的人。感謝大家。

      posted @ 2016-03-20 22:21  櫻良orz  閱讀(852)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 亚洲VA欧美VA国产综合| 99久久免费精品国产色| 伊人春色激情综合激情网| 视频二区国产精品职场同事| 91老肥熟女九色老女人| 国产精品中文字幕日韩| 99re热这里只有精品视频| 亚洲欧美日韩精品久久亚洲区| 人妻系列无码专区免费| 国产成人8X人网站视频| 日本一区二区三区在线 |观看 | 亚洲人成网站在线观看播放不卡| 四虎永久免费很黄的视频| 欧洲中文字幕一区二区| 国产网红女主播精品视频| 亚洲精品麻豆一二三区| 欧美日韩亚洲国产| 国产成人综合色在线观看网站| 中文字幕日韩视频欧美一区| 亚洲最大成人免费av| 18禁免费无码无遮挡网站| 国产在线拍揄自揄视频网试看| 亚洲精品毛片一区二区| 国产精品国产三级国产专i| 国产成人一区二区视频免费| 最近免费中文字幕大全| 国产精品日韩专区第一页| 免费无码黄十八禁网站| 人成午夜免费视频无码| 国产午夜亚洲精品福利| 国产suv精品一区二区| 国产成本人片无码免费| 亚洲精品香蕉一区二区| 精品国产一区二区三区av性色 | 亚洲AV无码成H人动漫无遮挡| 精品国产AV无码一区二区三区 | 2021久久精品国产99国产精品| 免费观看全黄做爰大片| 日本55丰满熟妇厨房伦| 猫咪AV成人永久网站在线观看| 熟妇无码熟妇毛片|