class App extends React.Component {
state = {
counter: 0,
};
handleClick=()=> {
const counter = this.state.counter; this.setState({counter: counter + 1});
};
//如果写成下面的形式,则点击无效,这两者区别是什么
handleClick(){
const counter = this.state.counter; this.setState({counter: counter + 1});
};
render() { return (
<div>
counter is: {this.state.counter}
<button onClick={this.handleClick}>点我</button>
</div>
)
}
}
2 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
我没用过React,但是大概能猜到原因,应该就是函数执行上下文的问题,第一种写法是箭头函数,App
实例化时handleClick
的this
已经被绑定到当前实例了,而第二种写法则会在执行的时候确定上下文,如果你的button
中的onclick
会被编译成 onclick="someInstance.handleClick",那么执行时的
this就会是
window。为了确认,你可以把第一种写法改成普通的
function的写法,或者把
onclick里的东西改成
this.handleClick.bind(this)`(不是很确定React能不能这么写),然后使用第二种写法。
添加回答
举报
0/150
提交
取消