diff --git a/src/GuessControl.js b/src/GuessControl.js
index 64108b5..bdb768c 100644
--- a/src/GuessControl.js
+++ b/src/GuessControl.js
@@ -1,47 +1,28 @@
-import React, { Component } from "react";
+import React, { useState } from "react";
import Button from "./Button";
-class GuessControl extends Component {
- constructor(props) {
- super(props);
+const GuessControl = ({ onGuess }) => {
+ const [currentGuess, setCurrentGuess] = useState("");
- this.state = {
- currentGuess: "",
- };
+ const handleInputChange = (event) => {
+ setCurrentGuess(event.target.value);
+ };
- /**
- * These lines are required to make the methods/functions declared on this
- * class have the correct `this` object when they run.
- */
- this.handleInputChange = this.handleInputChange.bind(this);
- this.onSubmitGuess = this.onSubmitGuess.bind(this);
- }
+ const onSubmitGuess = () => {
+ // Since the values from an HTML input are strings by default,
+ // convert to a number for the returned guess value
+ // by passing in the string to the Number function.
+ // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number
+ onGuess(Number(currentGuess));
+ setCurrentGuess("");
+ };
- handleInputChange(event) {
- this.setState({ currentGuess: event.target.value });
- }
-
- onSubmitGuess() {
- // Since the values from an HTML input are strings by default,
- // convert to a number for the returned guess value
- // by passing in the string to the Number function.
- // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number
- this.props.onGuess(Number(this.state.currentGuess));
- this.setState({ currentGuess: "" });
- }
-
- render() {
- return (
-
-
-
-
- );
- }
-}
+ return (
+
+
+
+
+ );
+};
export default GuessControl;
diff --git a/src/NumberGuessingGame.js b/src/NumberGuessingGame.js
index 07c5a24..e8776aa 100644
--- a/src/NumberGuessingGame.js
+++ b/src/NumberGuessingGame.js
@@ -1,4 +1,4 @@
-import React, { Component } from "react";
+import React, { useState } from "react";
import GuessControl from "./GuessControl";
import GuessMessage from "./GuessMessage";
import GameOver from "./GameOver";
@@ -8,70 +8,48 @@ import GameOver from "./GameOver";
* Returns a random integer number from 1-100 inclusive
*/
function getRandomNumber() {
- return Math.floor(Math.random() * 100) + 1;
+ return Math.floor(Math.random() * 100) + 1;
}
const MAX_ATTEMPTS = 5;
-class NumberGuessingGame extends Component {
- constructor(props) {
- super(props);
-
- this.state = {
- numberToGuess: getRandomNumber(),
- numberOfGuesses: 0,
- latestGuess: null,
- };
-
- /**
- * These lines are required to make the methods/functions declared on this
- * class have the correct `this` object when they run.
- */
- this.handleGuess = this.handleGuess.bind(this);
- this.handleReset = this.handleReset.bind(this);
- }
-
- handleGuess(guess) {
- this.setState({
- latestGuess: guess,
- numberOfGuesses: this.state.numberOfGuesses + 1,
- });
- }
-
- handleReset() {
- this.setState({
- numberToGuess: getRandomNumber(),
- numberOfGuesses: 0,
- latestGuess: null,
- });
- }
-
- render() {
- const isCorrectGuess = this.state.latestGuess === this.state.numberToGuess;
-
- const isGameOver =
- isCorrectGuess || this.state.numberOfGuesses === MAX_ATTEMPTS;
-
- return (
-
-
I'm thinking of a number from 1 to 100.
-
- Can you guess the number I am thinking of in {MAX_ATTEMPTS} tries?
-