You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
868 B
27 lines
868 B
import React from 'react'
|
|
|
|
class Test extends React.Component {
|
|
handler() {
|
|
// 错误演示
|
|
console.log(this) // 这里的 this 是 undefined
|
|
// this.setState 去修改数据还可以修改数据吗? 会报错
|
|
}
|
|
|
|
render() {
|
|
/* render 函数中的 this 已经被 react 内部做了修正
|
|
这里的 this 就是指向当前的组件实例对象
|
|
函数箭头中的 this 直接沿用,所以也是指向组件的实例对象 */
|
|
console.log('父函数中的 this 指向为:', this)
|
|
return (
|
|
/* 第二种修正方法:
|
|
如果不用 constructor 做修正,直接可以在事件绑定的位置通过箭头函数的写法,直接沿用父函数中的this指向也是可以的 */
|
|
<button onClick={() => this.handler}>click</button>
|
|
)
|
|
}
|
|
}
|
|
|
|
function App() {
|
|
return <Test></Test>
|
|
}
|
|
|
|
export default App
|