React基礎(chǔ)

一、引入React

<script src="../build/react.js"></script>

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

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

二、text/babel

由于React的JSX語法與原生的javascript語法不兼容,所以需要設(shè)置script標(biāo)簽的type屬性為'text/babel'

三、ReactDOM.render

ReactDOM.render函數(shù)是React的核心函數(shù),用來元素轉(zhuǎn)化為DOM渲染到頁面中,第一個(gè)參數(shù)為組件元素,當(dāng)需要渲染多個(gè)組件時(shí)需要使用一個(gè)容器包裹住,第二個(gè)參數(shù)為真實(shí)DOM節(jié)點(diǎn)

四、JSX

JSX是一種可以混用JS和html的新語法,在解析時(shí)遇到<時(shí)解析為html,遇到{則解析為javascript

五、組件

組件是React最為重要的概念,是一種頁面組織方式

React.createClass用來創(chuàng)建一個(gè)組件

render?方法用來定義組件該如何被渲染

this.props?用來引用組件上的屬性,組件的屬性在使用組件時(shí)指定,類似于html標(biāo)簽的屬性

this.props.children?用來引用組件的子節(jié)點(diǎn),可以使用React.Childern提供的幫助方法處理其數(shù)據(jù)結(jié)構(gòu)不一致的問題(當(dāng)子節(jié)點(diǎn)只有一個(gè)是this.props.children是一個(gè)object,沒有時(shí)為null,當(dāng)存在多個(gè)子節(jié)點(diǎn)時(shí)又是一個(gè)數(shù)組),方法如下:

React.Children.map()

React.Children.forEach()

React.Children.count()

React.Children.only()

React.Children.toAttay()

propTypes?用來定義屬性的類型,主要是用來保證組件在重用時(shí)被正確的使用,主要類型如下:

React.PropTypes.array

React.PropTypes.bool

React.PropTypes.func

React.PropTypes.number

React.PropTypes.object

React.PropTypes.string

this.refs?用來引用組件虛擬DOM對應(yīng)的真實(shí)DOM元素,在render函數(shù)中定義的元素中可以指定一個(gè)ref屬性,就可以在組件的其它地方通過this.refs.some_ele來引用其對應(yīng)的真實(shí)DOM節(jié)點(diǎn)了,不過要注意的是必須在真實(shí)的DOM節(jié)點(diǎn)插入之后才可以訪問

六、組件的狀態(tài)

組件是狀態(tài)驅(qū)動的,狀態(tài)是組件渲染的依據(jù),React與Jquery在開發(fā)方式上很大的區(qū)別就在于React是通過設(shè)置組件的狀態(tài)去影響真實(shí)的DOM節(jié)點(diǎn),而不是直接操作DOM

this.state?用來引用組件的狀態(tài)

this.setState()?方法用來設(shè)置組件的狀態(tài)

七、為組件元素設(shè)置樣式

設(shè)置元素的className屬性

內(nèi)聯(lián)樣式,如下:

...<div style={{opacity: this.state.opacity}}></div>

八、組件的生命周期及鉤子函數(shù)

Mounting

getInitialState()?獲取組件的初始化狀態(tài)

componentWillMount()?組件插入DOM前觸發(fā)

componentDidMount()?組件插入DOM后觸發(fā)

Updating

componentWillReceiveProps(object nextProps)?組件獲取到新屬性時(shí)調(diào)用,一般用來轉(zhuǎn)換狀態(tài)

shouldComponentUpdate(object nextProps, object nextState): boolean?判斷組件是否需要更新時(shí)調(diào)用,可以通過判斷屬性和狀態(tài)來決定是否需要更新,返回false將跳過更新

componentWillUpdate(object nextProps, object nextState)?組件更新前調(diào)用

componentDidUpdate(object prevProps, object prevState)?組件更新后調(diào)用

Unmounting

componentWillUnmount()?組件移除DOM前調(diào)用

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

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

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