javascript - 为什么 setState 不改变本地状态?
问题描述
大家好,所以我发现了关于 React 的有趣任务,但我有点不明白如何解决它
任务: 为什么这段代码不起作用?解决这个问题。
代码:
class Test extends React.Component {
constructor(props) {
super(props)
this.state = {
count: 1
}
}
handler() {
this.setState({count: this.state.count++})
}
render() {
console.log('render')
return (
<div>
<button onClick={this.handler}>Add 1</button>
<p>{this.state.count}</p>
</div>
);
}
}
ReactDOM.render(
<Test />,
document.getElementById("test"));
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.4.2/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.4.2/react-dom.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<div id="test"></div>
</body>
</html>
解决方案
您发送了错误的函数参考。应该是这样的。
<button onClick={this.handler.bind(this)}>Add 1</button>
或者
<button onClick={() => this.handler()}>Add 1</button>
推荐阅读
- java - CORS Preflight Error in browser but postman request works
- jakarta-ee - OpenLiberty 21.0.0.5 中的 JMS 配置问题
- java - 在 Mac 上安装 Apache Spark 和运行 spark-shell 时出错
- javascript - 在 div 内定位标签
- javascript - 如何使用 javascript 从方法 selenium 获取快速 Web 服务
- django - django 查询使用注释获取额外数据
- python - 在 python Docstring 中编写双反斜杠
- java - 如何将返回值传递给方法并在java android retrofit中获取响应值
- c++ - 为什么我的冒泡排序函数将 0 添加到我的向量数组中,尽管它不在我的数组中?
- php - 未强制执行 PHP 函数参数类型声明