【发布时间】:2019-11-11 06:20:52
【问题描述】:
以这段代码为例
import React, { Component } from ‘react’;
class App extends Component {
constructor(props) {
super(props);
this.clickFunction = this.clickFunction.bind(this);
}
clickFunction() {
console.log(this.props.value);
}
render() {
return(
<div onClick={this.clickFunction}>Click Me!</div>
);
}
}
bind(this) 的目的是什么?它将函数 clickFunction 绑定到 clickFunction 已经绑定到的对象的上下文,让我用普通的 javascript 代码说明我想说的话:
class my_class {
constructor() {
this.run = this.run.bind(this)
}
run() {
console.log(this.data)
}
}
my_class.data = 'this is data'
new my_class().run() //outputs 'undefined'
如果你删除了 bind(this) 它会给你同样的结果
constructor() {
this.run = this.run
}
结果:
new my_class().run() //still outputs 'undefined'
我确定我理解错了,这可能是地球上最糟糕的问题,但是我是 es6 的新手,我还不习惯上课,所以我为此道歉
【问题讨论】:
-
你应该在提问之前做一些研究。这是一个有据可查的事情。 React 类不会在自定义函数上绑定
this上下文。所以你必须自己绑定它。这是一个更普通的 JS 东西,而不是特定的反应。
标签: javascript reactjs