使用this指向当前组件的三种方法:分别是在模板里,在构造函数里,在构造函数里改变,推荐第三种,箭头函数。
1:在模板里面:改变this指向的方法
定义的数据
this.state = {
msg:'我是王小婷定义的数据一号'
}
方法
getData(){
alert(this.state.msg);
}
模板
<button onClick={this.getData.bind(this)}>第一种获取数据的方法</button>
2:在构造函数里面: 指定
定义数据,构造函数
constructor() {
super();
//react定义数据
this.state = {
msg:'我是王小婷定义的数据OO'
}
//第二种改变this指向的方法
this.getMsg=this.getMsg.bind(this);
}
方法:
getMsg(){
alert(this.state.msg);
}
模板
<button onClick={this.getMsg}>第二种获取数据的方法</button>
3:在方法里面:使用箭头函数指向(推荐)
定义数据
//react定义数据
this.state = {
msg:'我是王小婷定义的数据OO'
}
方法:
getName=()=>{
alert(this.state.msg);
}
模板
<button onClick={this.getName}>第三种获取数据的方法</button>
参考代码:Home.js
import React, { Component } from 'react';
import photo from '../asset/images/photo.jpg';
import '../asset/css/index.css'
class Home extends Component {
constructor() {
super();
//react定义数据
this.state = {
msg:'我是王小婷定义的数据OO'
}
//第二种改变this指向的方法--在构造函数里面: 指定
this.getMsg=this.getMsg.bind(this);
}
run(){
alert('我是王小婷定义的方法')
}
getData(){
alert(this.state.msg);
}
getMsg(){
alert(this.state.msg);
}
//第三种改变this指向的方法--在方法里面:使用箭头函数指向
getName=()=>{
alert(this.state.msg);
}
render() {
return (
<div>
<button onClick={this.run}>点击按钮</button>
{/* 第一种改变this指向的方法--在模板里面:改变this指向 */}
<button onClick={this.getData.bind(this)}>第一种获取数据的方法</button>
<button onClick={this.getMsg}>第二种获取数据的方法</button>
<button onClick={this.getName}>第三种获取数据的方法</button>
</div>
)
}
}
export default Home;