React中事件綁定this指向三種方法的實現(xiàn)
1.箭頭函數(shù)
1.利用箭頭函數(shù)自身不綁定this的特點;
2.render()方法中的this為組件實例,可以獲取到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與組件實例綁定到一起
class App extends React.Component{
constructor() {
super()
// 數(shù)據(jù)
this.state ={
count: 0
}
// 第一中方法.bind 改變this指向,返回一個函數(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的實例方法
1.利用箭頭函數(shù)形式的class實例方法
2.該語法是實驗性語法,但是由于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指向三種方法的實現(xiàn)的文章就介紹到這了,更多相關(guān)React 事件綁定this指向內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用 React 和 Threejs 創(chuàng)建一個VR全景項目的過程詳解
這篇文章主要介紹了使用 React 和 Threejs 創(chuàng)建一個VR全景項目的過程詳解,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
reactjs學(xué)習(xí)解決unknown at rule @tailwind css
這篇文章主要介紹了reactjs學(xué)習(xí)解決unknown at rule @tailwind css問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
React報錯之Object?is?possibly?null的問題及解決方法
這篇文章主要介紹了React報錯之Object?is?possibly?null的問題,造成 "Object is possibly null"的錯誤是因為useRef()鉤子可以傳遞一個初始值作為參數(shù),而我們傳遞null作為初始值,本文給大家分享詳細(xì)解決方法,需要的朋友可以參考下2022-07-07
React Native之ListView實現(xiàn)九宮格效果的示例
本篇文章主要介紹了React Native之ListView實現(xiàn)九宮格效果的示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08

