發(fā)現(xiàn)一個好用的網(wǎng)站caniuse.com
caniuse.com(我能用么)咧纠,在這個網(wǎng)站上你可以查看你所引入的模塊被哪些瀏覽器支持,非常清晰碘勉。示例圖如下:
react組件
component是react的一大特性板辽,以標(biāo)簽的形式模塊化的組織視圖及其功能奇瘦。component類的方法可以有以下幾種:事件處理方法、組件生命周期方法劲弦、render方法以及初始化方法耳标。其中render方法必須有,return的結(jié)果就是頁面要渲染呈現(xiàn)的內(nèi)容邑跪。事件處理方法的使用是將其綁定在render結(jié)果中的某個(些)標(biāo)簽上麻捻,在觸發(fā)特定事件后進(jìn)行調(diào)用纲仍。
參考資料
Thinking in React
react 組件life-cycle
- 初始化階段
getDefaultProps
在組件創(chuàng)建的時候調(diào)用,即使用React.createClass()時贸毕,定義默認(rèn)的props,保證父組件沒有傳入?yún)?shù)時props仍有值可用夜赵。
getInitialState
初始化this.state明棍,只在組件Mount前調(diào)用一次。state屬性用來標(biāo)記組件內(nèi)部狀態(tài)的變化寇僧,是控制組件視圖變化的重要手段摊腋。除了使用getInitialState方法外,ES6也可使用構(gòu)造器進(jìn)行初始化嘁傀。
constructor(props) {
super(props);
this.state = { count: props.initialCount };
}
- 組件裝載階段
componentWillMount
只在render之前調(diào)用一次兴蒸,可以調(diào)用setState改變狀態(tài)。
componetDidMounnt
只在render之后調(diào)用一次细办,可以調(diào)用findDOMNode(this)查找組件結(jié)點橙凳。
render之后調(diào)用 - 組件更新階段
(以下方法不會在首次render的時候調(diào)用)
componentWillReceiveProps
shouldComponentUpdate
componentWillUpdate
componentDidUpdate
- 組件卸載階段
componentWillUnmount
react的props和state
super(props)是什么意思?
state是class才具備的特性笑撞,所以要使用state的組件必須用class myClass extends React.Component()
創(chuàng)建岛啸,而不是函數(shù)對象的形式創(chuàng)建。state的初始化是在constructor類構(gòu)造器中為this.state賦值茴肥。
react中調(diào)用setState方法設(shè)置state的值坚踩,會觸發(fā)組件重新render。
react事件
react事件分為兩種瓤狐,一種是js原生事件瞬铸,在生命周期函數(shù)componentDidMount
中使用addEventListener
進(jìn)行綁定,一種是合成事件础锐,使用jsx在組件中進(jìn)行綁定操作嗓节,<p onClick={this.handleClick.bind(this, 'extra param')}>
(盡量顯式的將事件處理函數(shù)綁定到組件實例)。合成事件符合w3c標(biāo)準(zhǔn)郁稍,其好處是會以事件委托(event delegation)的形式綁定到最上層組件赦政,并在組件卸載時自動銷毀。而原生事件需要在componentWillUnmount
階段使用removeEventListener
手動解除綁定耀怜。
react的DOM操作
- 獲取組件對應(yīng)的DOM元素
組件加載后恢着,可以使用ReactDOM.findDOMNode()
來獲取,需要注意的是findDOMNode
不能獲取到無狀態(tài)的組件财破。 - refs
為元素設(shè)置ref屬性掰派,可在組件內(nèi)部對元素進(jìn)行訪問,而且是唯一可靠的方式左痢,如this.refs.name
靡羡,需要注意的是ref不能設(shè)置在無狀態(tài)組件上(無狀態(tài)組件指的是沒有生命周期函數(shù)系洛、沒有設(shè)置state變量的組件)。