摘要:概述上一章講咯生命周期,這一章就是事件處理咯事件綁定綁定一個(gè)外部函數(shù)按鈕綁定一個(gè)內(nèi)部函數(shù)按鈕解決函數(shù)綁定的問題上面的栗子有個(gè)問題在內(nèi)無法訪問內(nèi)的資源,比如按鈕可以這么解決這個(gè)問題按鈕或者按鈕或者按鈕第三中方式需要支持
0x000 概述
上一章講咯生命周期,這一章就是事件處理咯
0x001 事件綁定// 綁定一個(gè)外部函數(shù) function handleClick(event) { console.log("handleClick", event) } class App extends React.Component { render() { return } } ReactDom.render(, document.getElementById("app") )
// 綁定一個(gè)內(nèi)部函數(shù) class App extends React.Component { handleClick(event) { console.log("handleClick", event, this) } render() { return } } ReactDom.render(0x002 解決函數(shù)綁定的this問題, document.getElementById("app") )
上面的栗子有個(gè)問題:在handleClick內(nèi)無法訪問App內(nèi)的資源,比如this.state
class App extends React.Component { constructor(){ super() this.state={ name:1 } } handleClick(event) { console.log("handleClick", event, this.state.name) } render() { return } } ReactDom.render(, document.getElementById("app") )
可以這么解決這個(gè)問題:
class App extends React.Component { constructor() { super() this.state = { name: 1 } } handleClick(event) { console.log("handleClick", event, this.state.name) } render() { return } } ReactDom.render(, document.getElementById("app") )
或者
class App extends React.Component { constructor() { super() this.state = { name: 1 } this.handleClick = this.handleClick.bind(this) } handleClick(event) { console.log("handleClick", event, this.state.name) } render() { return } } ReactDom.render(, document.getElementById("app") )
或者
class App extends React.Component { constructor() { super() this.state = { name: 1 } } handleClick = (event) => { console.log("handleClick", event, this.state.name) } render() { return } } ReactDom.render(, document.getElementById("app") )
第三中方式需要babel-plugin-transform-class-properties支持:
$ npm install --save-dev babel-plugin-transform-class-properties $ vim .babelrc { "presets": [ "env" ], "plugins": [ "transform-react-jsx", "transform-class-properties" ] }0x003 做幾個(gè)栗子
栗子:計(jì)數(shù)器
class App extends React.Component { constructor() { super() this.state = { num: 1 } } handleClick(event) { this.setState({ num: ++this.state.num }) } render() { return} } ReactDom.render({this.state.num}
, document.getElementById("app") )
栗子2:tab 切換
class App extends React.Component { constructor() { super() this.state = { tab: 1 } } handleClick(tab) { this.setState({ tab: tab }) } render() { return0x004 事件說明{ this.state.tab === 1 ?} } ReactDom.render(tab1:tab2}, document.getElementById("app") )
事件相關(guān)的屬性名為on開頭的駝峰寫法,和html中的事件一致
0x005 資源react
源碼
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/97150.html
摘要:概述在中,渲染數(shù)據(jù)的形式有多種多樣,但是萬變不離其中,都是用。當(dāng)然,自由也帶來混亂,需要將這種自由化為思想的自由,而不是工程的自由代碼的自由,否則將會帶來噩夢。 0x000 概述 在React中,渲染數(shù)據(jù)的形式有多種多樣,但是萬變不離其中,都是用js。 0x001 渲染文本 // 渲染文本 ReactDom.render( 這是一個(gè)文本, document.getEle...
摘要:概述上一章只是稍微了解了一下和相關(guān)的簡單用法,這一章需要講一下組件的生命周期。生命周期的概念這玩意似乎很高大上,其實(shí)就是一個(gè)假概念罷了,直接來實(shí)現(xiàn)一個(gè)類似的吧。 0x000 概述 上一章只是稍微了解了一下state和setState相關(guān)的簡單用法,這一章需要講一下組件的生命周期。 0x001 生命周期的概念 這玩意似乎很高大上,其實(shí)就是一個(gè)假概念罷了,直接來實(shí)現(xiàn)一個(gè)類似的吧。大凡事物從...
摘要:概述模板字符串出來以后,單引號雙引號哪個(gè)好的爭論可以退出歷史舞臺的,模板字符串的最好語法單行文本多行文本內(nèi)嵌表達(dá)式標(biāo)簽語法不太喜歡單行文本完全不單引號和雙引號,當(dāng)然,轉(zhuǎn)義是不可避免的,有所得必有所失去嘛多行文本,也不用關(guān)系換行的編碼轉(zhuǎn)化問題 0x000 概述 模板字符串出來以后,單引號、雙引號哪個(gè)好的爭論可以退出歷史舞臺的,模板字符串的`最好! 0x001 語法 單行文本 `str...
摘要:簡單的說就是,新語法編譯器舊語法。說明所以,對于新特性,我們可以通過使用,也可以通過語法轉(zhuǎn)化來達(dá)到兼容。 0x001 polyfill 我們都知道,js總是一直存在著兼容性問題,雖然其他語言也存在著兼容性問題,比如c++、java,但那種兼容性是新特性在舊版本上的不兼容,js則存在著各種奇形怪哉的不兼容。這其中有著非常復(fù)雜的歷史和時(shí)代的原因,并不加以累述。而解決兼容性問題的方法在以前只...
摘要:以下內(nèi)容當(dāng)具備語法環(huán)境前端組件基礎(chǔ)概念寫過代碼包你天上手項(xiàng)目下面開始地址項(xiàng)目結(jié)構(gòu)如下的方式值得借鑒介紹一個(gè)框架讓開發(fā)者可以在中寫代碼也就是語法稱為虛擬類似一個(gè)對象掛載節(jié)點(diǎn)將寫的虛擬變成真的每次都是新舊虛擬之間進(jìn)行比較之后才會生成真實(shí)創(chuàng)建項(xiàng) 以下內(nèi)容,當(dāng)具備ES6,JS語法,node環(huán)境,前端組件基礎(chǔ)概念,寫過java代碼,包你3天上手React項(xiàng)目,下面開始... demo地址 htt...
閱讀 2581·2021-11-23 09:51
閱讀 2495·2021-09-30 09:48
閱讀 1094·2021-09-10 10:51
閱讀 2229·2021-08-12 13:22
閱讀 3583·2021-08-11 10:24
閱讀 2183·2019-08-30 15:55
閱讀 653·2019-08-30 14:05
閱讀 3220·2019-08-30 13:03