事件監(jiān)聽
在React.js中監(jiān)聽并不是一件很難的事情,我們只需在監(jiān)聽事件的元素加上屬性on click等等這樣的屬性就可以了。

我們只需要在h1標(biāo)簽上加上onClick事件,然后onClick后面是一個(gè)表達(dá)式的插入,這個(gè)表達(dá)式返回組件
Hello的一個(gè)方法。在這里只要用戶每點(diǎn)擊一次標(biāo)題,控制臺(tái)就會(huì)輸出你點(diǎn)擊了一下我!。

在 React.js 不需要手動(dòng)調(diào)用瀏覽器原生的 addEventListener 進(jìn)行事件監(jiān)聽。React.js 幫我們封裝好了一系列的 on* 的屬性,當(dāng)你需要為某個(gè)元素監(jiān)聽某個(gè)事件的時(shí)候,只需要簡(jiǎn)單地給它加上 on* 就可以了。而且你不需要考慮不同瀏覽器兼容性的問(wèn)題,React.js 都幫我們封裝好這些細(xì)節(jié)了。
但是需要注意的是這些事件屬性名都必須要用駝峰命名法。
event對(duì)象
與普通瀏覽器一樣,事件監(jiān)聽函數(shù)會(huì)自動(dòng)傳入一個(gè)event對(duì)象,這個(gè)對(duì)象和普通瀏覽器的event對(duì)象所包含的方法和屬性基本一致。但是React.js中的event對(duì)象并不是瀏覽器所提供的,而是它內(nèi)部所構(gòu)建的。
我們來(lái)看一下,當(dāng)用戶點(diǎn)擊h1的時(shí)候,h1的inHTML也就是這是一個(gè)標(biāo)題!就會(huì)在控制臺(tái)打印出來(lái)。


關(guān)于事件中的this
一般在某個(gè)類的實(shí)例方法里面的this指的是這個(gè)實(shí)例本身。但是在下面的這個(gè)例子中直接把this給打印出來(lái),你看到會(huì)是null或者是undefined。


這是因?yàn)?React.js 調(diào)用你所傳給它的方法的時(shí)候,并不是通過(guò)對(duì)象方法的方式調(diào)用(this.handleOnClick),而是直接通過(guò)函數(shù)調(diào)用 (handleOnClick),所以事件監(jiān)聽函數(shù)內(nèi)并不能通過(guò) this 獲取到實(shí)例。
如果你想在事件函數(shù)當(dāng)中使用當(dāng)前的實(shí)例,你需要手動(dòng)地將實(shí)例方法 bind 到當(dāng)前實(shí)例上再傳入給 React.js。

