因为js的问题,react类组件需要绑定this,否则类方法的this可以修改
class Person {
name;
age;
constructor(name, age) {
this.name = name
this.age = age
}
sayThis () {
console.log(this);
console.log(this.name);
}
}
let p1 = new Person("GSS", 12)
p1.sayThis()//Person {name: 'GSS', age: 12} "GSS"
let obj = {
name: "wyw",
}
p1.sayThis.apply(obj)//obj "wyw"
尝试绑定一下this
class Person {
name;
age;
constructor(name, age) {
this.name = name
this.age = age
this.sayThis=this.sayThis.bind(this)
}
sayThis () {
console.log(this);
console.log(this.name);
}
}
let p1 = new Person("GSS", 12)
p1.sayThis()//Person {name: 'GSS', age: 12} "GSS"
let obj = {
name: "wyw",
}
p1.sayThis.apply(obj)//Person {name: 'GSS', age: 12, sayThis: ƒ} GSS
可以发现最后的apply失效了,this并没有改变,所以我们可以通过这种方式保持this