React中事件綁定this指向三種方法的實(shí)現(xiàn)
1.箭頭函數(shù)
1.利用箭頭函數(shù)自身不綁定this的特點(diǎn);
2.render()方法中的this為組件實(shí)例,可以獲取到setState();
class App extends React.Component{ state ={ count: 0 } // 事件處理程序 onIncrement() { console.log('事件處理函數(shù)中的this:',this) this.setState({ count:this.state.count+1 }) } // 渲染 render() { return ( <div> <h1> {this.state.count}</h1> // 箭頭函數(shù)中的this指向外部環(huán)境,此處為:render()方法 <button onClick={()=>this.onIncrement()}>+1</button> {/* <button onClick={this.onIncrement()}>+1</button> */} </div> ) } }
2.Function.proptype.bind()
1.利用ES5中的bind方法,將事件處理程序中的this與組件實(shí)例綁定到一起
class App extends React.Component{ constructor() { super() // 數(shù)據(jù) this.state ={ count: 0 } // 第一中方法.bind 改變this指向,返回一個(gè)函數(shù),不執(zhí)行該函數(shù) this.onIncrement = this.onIncrement.bind(this) } // 事件處理程序 onIncrement() { console.log('事件處理函數(shù)中的this:',this) this.setState({ count:this.state.count+1 }) } // 渲染 render() { return ( <div> <h1> {this.state.count}</h1> <button onClick={this.onIncrement}>+1</button> {/* <button onClick={this.onIncrement()}>+1</button> */} </div> ) } }
3.class的實(shí)例方法
1.利用箭頭函數(shù)形式的class實(shí)例方法
2.該語法是實(shí)驗(yàn)性語法,但是由于babel的存在就可以直接使用
class App extends React.Component{ constructor() { super() // 數(shù)據(jù) this.state ={ count: 0 } } // 事件處理程序 onIncrement=()=> { console.log('事件處理函數(shù)中的this:',this) this.setState({ count:this.state.count+1 }) } // 渲染 render() { return ( <div> <h1> {this.state.count}</h1> <button onClick={this.onIncrement}>+1</button> {/* <button onClick={this.onIncrement()}>+1</button> */} </div> ) } }
到此這篇關(guān)于React中事件綁定this指向三種方法的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)React 事件綁定this指向內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用 React 和 Threejs 創(chuàng)建一個(gè)VR全景項(xiàng)目的過程詳解
這篇文章主要介紹了使用 React 和 Threejs 創(chuàng)建一個(gè)VR全景項(xiàng)目的過程詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04reactjs學(xué)習(xí)解決unknown at rule @tailwind css
這篇文章主要介紹了reactjs學(xué)習(xí)解決unknown at rule @tailwind css問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02React報(bào)錯(cuò)之Object?is?possibly?null的問題及解決方法
這篇文章主要介紹了React報(bào)錯(cuò)之Object?is?possibly?null的問題,造成 "Object is possibly null"的錯(cuò)誤是因?yàn)閡seRef()鉤子可以傳遞一個(gè)初始值作為參數(shù),而我們傳遞null作為初始值,本文給大家分享詳細(xì)解決方法,需要的朋友可以參考下2022-07-07使用Webpack打包React項(xiàng)目的流程步驟
隨著React應(yīng)用日益復(fù)雜,開發(fā)者需要借助模塊打包工具來管理項(xiàng)目依賴、轉(zhuǎn)換代碼和優(yōu)化性能,Webpack是一款功能強(qiáng)大的模塊打包器,它可以將React項(xiàng)目中的JavaScript、CSS、圖片等資源打包成瀏覽器友好的文件,本文將全面介紹如何使用Webpack打包React項(xiàng)目2025-03-03React Native之ListView實(shí)現(xiàn)九宮格效果的示例
本篇文章主要介紹了React Native之ListView實(shí)現(xiàn)九宮格效果的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08