Categories
React Projects

Create a Magic 8 Ball with React and JavaScript

Spread the love

React is an easy to use JavaScript framework that lets us create front end apps.

In this article, we’ll look at how to create a magic 8 ball app with React and JavaScript.

Create the Project

We can create the React project with Create React App.

To install it, we run:

npx create-react-app magic-8-ball

with NPM to create our React project.

Create the Magic 8 Ball App

To create the magic 8 ball app, we write:

import React, { useState } from "react";
const answers = [
  "It is certain",
  "It is decidedly so",
  "Without a doubt",
  "Yes - definitely",
  "You may rely on it",
  "As I see it, yes",
  "Most likely",
  "Outlook good",
  "Yes",
  "Signs point to yes",
  "Don't count on it",
  "My reply is no",
  "My sources say no",
  "Outlook not so good",
  "Very doubtful",
  "Reply hazy, try again",
  "Ask again later",
  "Better not tell you now",
  "Cannot predict now",
  "Concentrate and ask again"
];

export default function App() {
  const [question, setQuestion] = useState("");
  const [answer, setAnswer] = useState("");

  const getAnswer = (e) => {
    e.preventDefault();
    if (!question) {
      return;
    }
    const index = Math.floor(Math.random() * answers.length);
    setAnswer(answers[index]);
  };

  return (
    <div>
      <style>
        {`
          .circle {
            border: 1px solid black;
            border-radius: 50%;
            width: 150px;
            height: 150px;
            display: flex;
            justify-content: center;
            align-items: center;
          }
          `}
      </style>
      <form onSubmit={getAnswer}>
        <div>
          <label>question</label>
          <input
            value={question}
            onChange={(e) => setQuestion(e.target.value)}
          />
        </div>
        <button type="submit">get answer</button>
      </form>
      <div className="circle">
        <p>{answer}</p>
      </div>
    </div>
  );
}

We have the answers array with the answer items that can be chosen.

Then we define the question state which is set by entering the input.

And answer state is set by choosing an entry from the answers array randomly.

Then we gave the getAnswer function that picks the answer after the question is entered.

We call e.preventDefault() to do client-side submission.

We check if question is set.

And if it is, then we call setAnswer to set the answer .

Below that, we have a form with an input to let us enter the question value.

We get the value in the value prop and set the value with the onChange prop.

e.target.value has the inputted value.

answer has the answer that’s randomly chosen.

We put the answer in a circle by setting the className to circle .

Then we set the border-radius to 50% to make the div a circle.

Conclusion

We can create a magic 8 ball app easily with React and JavaScript.

By John Au-Yeung

Web developer specializing in React, Vue, and front end development.

Leave a Reply

Your email address will not be published. Required fields are marked *