reactjs - 为什么增加数量的按钮不起作用(模拟喜欢)?如何解决这个问题?
问题描述
我想制作一个按钮,将权利的数量增加 1(模拟喜欢)。我也想只用一个组件来创建它。但由于某种原因,代码不起作用。如何解决这个问题?
class Like extends React.Component {
state = {
like: 0,
}
plus() {
this.setState({
like: this.state.like + 1,
});
}
render() {
return (
<div>
<button onClick={this.plus}>click me</button>
{this.state.like}
</div>
);
}
}
ReactDOM.render(<Like />, document.getElementById('app'));
解决方案
这是因为在plus()
函数中,this
关键字是未定义的。您需要将它绑定到您的组件,以便它指向正确的上下文。或者您可以使用具有词法绑定的箭头函数。
class Like extends React.Component {
state = {
like: 0,
}
plus = () => {
this.setState({
like: this.state.like + 1,
});
}
render() {
return (
<div>
<button onClick={this.plus}>click me</button>
{this.state.like}
</div>
);
}
}
ReactDOM.render(<Like />, document.getElementById('app'));
或者,您可以使用:
class Like extends React.Component {
constructor(props){
super(props)
this.state = {
like: 0
}
this.plus = this.plus.bind(this)
}
plus() {
this.setState({
like: this.state.like + 1,
});
}
render() {
return (
<div>
<button onClick={this.plus}>click me</button>
{this.state.like}
</div>
);
}
}
ReactDOM.render(<Like />, document.getElementById('app'));
推荐阅读
- mysql - 用其他表中列的唯一值数填充sql表中的列
- javascript - Vue 3:`defineProps` 正在引用本地声明的变量
- android - 应用因违反 Facebook 平台政策 6.1 而被停用(为什么它显示响应代码为 0)
- python - 如何对特定年份和月份的访问人数进行分组和统计
- php - php获取外部函数变量不起作用
- javascript - .map 是如何工作的?
- r - ggplot2 按第 80 个百分位重新排列我的箱线图
- javascript - 用于动态更新图像源的备份图像
- html - 与我的引导轮播重叠的角标题
- firebase - 如何在 Firebase 中创建计算字段?