【发布时间】:2018-08-27 17:03:12
【问题描述】:
我正在尝试构建一个猜数字游戏。 我写了一个按钮来猜测一个数字,一个按钮来生成一个随机数,以及一个按钮来比较猜测的数字和生成的数字。 当我单击猜测数字按钮时,将触发 handleClickCompare 方法,并在其中获取 console.log。每次触发 handleChange 时,handleClickCompare 也会触发。有时但不是每次当我按下猜测按钮时都会生成一个新的随机数。 怎么回事?
import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';
class App extends Component {
constructor(props){
super(props);
this.state={ guess:0, gen:0 }
}
handleChange(guess, e) {
this.setState({guess: e.target.value});
console.log(this.state);
}
// handleChange(guess, event) {
// this.setState([guess]: event.target.value);
// console.log(this.state);
// }
handleClick(guess, e) {
this.setState({ guess: e.target.value });
console.log(this.state);
}
handleClickGen(gen,e){
this.setState({gen: Math.floor(Math.random()*10)});
console.log(this.state);
}
handleClickCompare(guess, gen) {
if (gen<guess) {
console.log("guess lower");
}
if (guess < gen) {
console.log("guess higher");
}else {
console.log("You got it chief");
}
}
render() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">Welcome to React</h1>
</header>
<p className="App-intro">
Enter a number
</p>
<input
value={this.state.guess}
onChange={this.handleChange.bind(this, "guess")}
type="number"
/>
{/* <input name={guess} onChange={event => this.handleChange(event)} /> */}
{/* <input type="text" name="guess" value={this.state.title}
onChange={this.handleChange.bind(this)}/> */}
<button type="button"
onClick={this.handleClick.bind(this, "guess")}>
guess{" "}
</button>
<button type="button"
onClick={this.handleClickGen.bind(this, "gen")}>
gen a number{" "}
</button>
<button type="button"
onClick={this.handleClickCompare(this.state.guess, this.state.gen)}>
compare{" "}
</button>
</div>
);
}
}
export default App;
>
【问题讨论】:
-
阿里,请告诉我们以下解决方案是否有效?
标签: javascript reactjs