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-router?重新加回跳轉(zhuǎn)攔截功能詳解
這篇文章主要為大家介紹了react-router?重新加回跳轉(zhuǎn)攔截功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
React?Context?變遷及背后實現(xiàn)原理詳解
這篇文章主要為大家介紹了React?Context?變遷及背后實現(xiàn)原理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Remix 后臺桌面開發(fā)electron-remix-antd-admin
這篇文章主要為大家介紹了Remix 后臺桌面開發(fā)electron-remix-antd-admin的過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04

