天天看點

React 元件 API

在本章節中我們将讨論 React 元件 API。我們将講解以下7個方法:

設定狀态:setState

替換狀态:replaceState

設定屬性:setProps

替換屬性:replaceProps

強制更新:forceUpdate

擷取DOM節點:findDOMNode

判斷元件挂載狀态:isMounted

nextState,将要設定的新狀态,該狀态會和目前的state合并

callback,可選參數,回調函數。該函數會在setState設定成功,且元件重新渲染後調用。

合并nextState和目前state,并重新渲染元件。setState是React事件處理函數中和請求回調函數中觸發UI更新的主要方法。

不能在元件内部通過this.state修改狀态,因為該狀态會在調用setState()後被替換。

setState()并不會立即改變this.state,而是建立一個即将處理的state。setState()并不一定是同步的,為了提升性能React會批量執行state和DOM渲染。

setState()總是會觸發一次元件重繪,除非在shouldComponentUpdate()中實作了一些條件渲染邏輯。

class Counter extends React.Component{

constructor(props) {

super(props);

this.state = {clickCount: 0};

this.handleClick = this.handleClick.bind(this);

}

handleClick() {

this.setState(function(state) {

return {clickCount: state.clickCount + 1};

});

render () {

return (<h2 onClick={this.handleClick}>點我!點選次數為: {this.state.clickCount}</h2>);

ReactDOM.render(

<Counter />,

document.getElementById('example')

);

執行個體中通過點選 h2 标簽來使得點選計數器加 1。

nextState,将要設定的新狀态,該狀态會替換目前的state。

callback,可選參數,回調函數。該函數會在replaceState設定成功,且元件重新渲染後調用。

replaceState()方法與setState()類似,但是方法隻會保留nextState中狀态,原state不在nextState中的狀态都會被删除。

nextProps,将要設定的新屬性,該狀态會和目前的props合并

callback,可選參數,回調函數。該函數會在setProps設定成功,且元件重新渲染後調用。

設定元件屬性,并重新渲染元件。

props相當于元件的資料流,它總是會從父元件向下傳遞至所有的子元件中。當和一個外部的JavaScript應用內建時,我們可能會需要向元件傳遞資料或通知React.render()元件需要重新渲染,可以使用setProps()。

更新元件,我可以在節點上再次調用React.render(),也可以通過setProps()方法改變元件屬性,觸發元件重新渲染。

nextProps,将要設定的新屬性,該屬性會替換目前的props。

callback,可選參數,回調函數。該函數會在replaceProps設定成功,且元件重新渲染後調用。

replaceProps()方法與setProps類似,但它會删除原有 props。

callback,可選參數,回調函數。該函數會在元件render()方法調用後調用。

forceUpdate()方法會使元件調用自身的render()方法重新渲染元件,元件的子元件也會調用自己的render()。但是,元件重新渲染時,依然會讀取this.props和this.state,如果狀态沒有改變,那麼React隻會更新DOM。

forceUpdate()方法适用于this.props和this.state之外的元件重繪(如:修改了this.state後),通過該方法通知React需要調用render()

一般來說,應該盡量避免使用forceUpdate(),而僅從this.props和this.state中讀取狀态并由React觸發render()調用。

傳回值:DOM元素DOMElement

如果元件已經挂載到DOM中,該方法傳回對應的本地浏覽器 DOM 元素。當render傳回null 或 false時,this.findDOMNode()也會傳回null。從DOM 中讀取值的時候,該方法很有用,如:擷取表單字段的值和做一些 DOM 操作。

傳回值:true或false,表示元件是否已挂載到DOM中

isMounted()方法用于判斷元件是否已挂載到DOM中。可以使用該方法保證了setState()和forceUpdate()在異步場景下的調用不會出錯。

本文參考:http://itbilu.com/javascript/react/EkACBdqKe.html