React筆記_(6)_react文法5

來源:互聯網
上載者:User

標籤:規範性   com   const   port   one   .com   targe   document   實現   

react的版本


目前主要的react有 ES5,ES6.也有ES5和ES6混合編寫的。比較混亂。

react官方提倡用ES6。

 

說到這裡,就需要提到一個概念——mixin

mixin在es6中被摒棄掉了。

mixin:


簡單來講,就是部分公用的代碼,提取出來作為一個獨立的木塊,

利用混入的方式來使用。這就是mixin。

es5裡面,聲明一個mixin單例對象,直接以數組方式插到組件使用即可;

es6不提倡這樣的寫法,而是使用高階組件的方式實現。

 高階組件:

     其實就是把一個類作為參數丟到另一個類(修飾類)中,

     在這個類中將上一個類增加一點東西,然後再return返回去,

     等於把上一個類的功能修飾增強了。

 

哎呀。概念好麻煩。還是看看代碼怎麼樣實現吧。

首先說明一下實現思路。

1.我們用箭頭函數,將組件類作為參數丟進去。2.在這個函數內部,聲明一個類,繼承傳進來的組件類。3.加入新的屬性和方法,然後返回類。

  

看下實現:

import React,{ Component } from ‘react‘;import ReactDOM from ‘react-dom‘;//待增強類class MyTest extends Component{    constructor(props){        super(props);    }    render(){        return (<button onClick={this.show.bind(this,this.props)}>click</button>);    }}//修飾函數,將類作為參數傳入。let IntervalEnhance = myComponent => {//聲明一個內部類。// 注意,這個內部類不能有render方法,否則會將原類中的render覆蓋。    class ES6_Mixin extends myComponent {        componentWillMount() {            console.log("渲染前");            this.timer = setInterval(function(){                console.log(‘不斷列印中.....‘);            },500);        }       componentWillUnmount(){              console.log("銷毀啦!");             clearInterval(this.timer);       }        show(obj){            console.log(obj);        }    }//修飾後返回return ES6_Mixin;};var EnhancedTest = IntervalEnhance(MyTest);ReactDOM.render(<EnhancedTest myname={"zhangwei"} />,document.getElementById(‘app‘));//10s後銷毀setTimeout(function(){    ReactDOM.unmountComponentAtNode(document.getElementById("app"));},10000);

 

說明:

1.MyTest這個類,被增強了計時器功能和show()方法。最後,我們用增強後的類作為新組件類,渲染到頁面上。

2.es5版的mixin對象裡如果有相同的周期函數,是可以先載入mixin的,然後再載入組件本身的,之間並不會有覆蓋

3.高階組件的做法弱化了之前mixin的功能。

4.新式寫法增強了代碼的規範性

 

原始碼說明:點此下載

 

React筆記_(6)_react文法5

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.