javascript - 猜测反应中的数字
问题描述
我正在尝试在 React 中制作一个简单的猜数字游戏。
想法是:在函数中生成一个随机数generateRandom
。然后在compare
函数中,给一个变量(c
)加1,直到玩家猜到数字,最后显示玩家需要猜的次数。
问题是:当我提交号码时,什么也没有发生。我得出的结论是问题一定出在函数中:generateRandom
或 compare
。
在这里我留下代码:
应用程序.js:
class App extends Component {
constructor(props) {
super(props)
this.generateRandom = this.generateRandom.bind(this)
this.compare = this.compare.bind(this)
}
render() {
return (
<div onSubmit={this.compare}>
<h1>GUESSING GAME</h1>
<p>Enter a number:
<input type="number" name="num" />
</p>
<button type="submit" value="submit">Guess</button>
</div>
);
}
generateRandom(v) {
v = Math.trunc(Math.random() *10);
}
compare(e) {
e.preventDefault();
let v = 0;
this.generateRandom(v);
let c = 0;
const n = parseInt(e.target.num.value);
if ( n === v) {
c++;
alert("Nice, you guessed it in " + c + "attempts");
}
else if (n > v) {
c++;
alert("Nope, the number is smaller");
}
else if (n < v) {
c++;
alert("Nope, the number is bigger");
}
}
}
解决方案
您似乎对v
.
// previously you were just mutating an argument without returning anything
generateRandom() {
return Math.trunc(Math.random() *10);
}
compare(e) {
e.preventDefault();
// use that returned value here
let v = this.generateRandom(v);
...
此外,正如另一位评论者提到的,div
s 没有onSubmit
事件,那只是为了form
s。所以你可以用
<form onSubmit={this.compare}>
...
</form>
或者您可以更改您button
的使用onClick
处理程序
<button onClick={this.compare}>Guess</button>
推荐阅读
- db2 - 我们什么时候应该在 DB2 中使用 NOT ENFORCED 和外键约束?
- android - 无法连接到 android.support.test.orchestrator.OrchestratorService
- java - 在 Grails 中使用复合键搭建表时出现 NullPointerException
- nginx - DO Spaces [或 S3] + 带有子域的 Nginx
- android - 使缓存无效与重建项目
- java - 在java中将Json对象发送到kafka主题
- wso2 - WSO2 ESB:SFTP 文件传输:无法连接到 SFTP 服务器
- django - 使用动态参数调度任务以在 Django 中使用 celery 定期运行
- python - 在 Python/FORTRAN 中绘制卡门涡旋流线
- sql - 我如何将 varchar 类型转换为浮动以使用带有 group by 的聚合 sum() 函数