Implementation of Simple Calculator

share link

by vsasikalabe dot icon Updated: Jan 24, 2023

technology logo
technology logo

Solution Kit Solution Kit  

An iOS calculator clone with React Native is a mobile application that is designed to look and function like the built-in calculator app on Apple's iOS operating system. It is built using the React Native framework, which allows developers to use JavaScript and React to create cross-platform mobile apps for iOS and Android.


Common iOS calculator capabilities include parentheses, square roots, and percentage calculations, in addition to various fundamental and complex mathematical operations, including addition, subtraction, multiplication, and division. By following actions, we can develop an iOS calculator in React: 

  • Create a react project in your terminal. 
  • Construct a new element for the administrative panel. 
  • Import the required dependencies, such as "component" and "react." 
  • Create a class for it, then define the render() function. 
  • Add any additional state or logic required, such as data fetched from an API. 


You may use CSS to customize the component and modify the buttons and input fields so that the calculator resembles an iOS calculator more closely. 


Here's an example of how to build an iOS Calculator Clone with React Native;

Preview of the output that you will get on running this code from your IDE

Code:

In this solution we use the React library.

import React from "react";
import "./style.css";
import "./App.css";
const operators = ["+", "-", "/", "*", "%"];

class Layout extends React.Component {
  constructor() {
    super();
    this.state = {
      text: "",
      result: [],
      prevResult: []
    };
    this.handleChange = this.handleChange.bind(this);
    this.calculate = this.calculate.bind(this);
    this.onChange = this.onChange.bind(this);
  }

  handleChange(event) {
    const { name, value } = event.target;

    let text = this.state.text;
    let lastChar = text.charAt(text.length - 1);
    const isOperator = operators.indexOf(value) !== -1;
    if (value === "=") {
      this.setState(prevState => this.calculate(prevState));
    } else if (value === "CE") {
      this.setState({ text: text.slice(0, -1) });
    } else if (value === "C") {
      this.setState({ text: "" });
    } else if (isOperator && operators.indexOf(lastChar) !== -1) {
      text = text.substr(0, text.length - 1) + value;
      this.setState({ [name]: text });
    } else {
      this.setState({ [name]: text + value });
    }
  }
  onChange({ target }) {
    this.setState({ text: target.value });
  }
  calculate(prevState) {
    try {
      const text = (eval(this.state.text) || "") + "";
      return {
        text,
        result: [...prevState.result, this.state.text + "   "],
        prevResult: [...prevState.prevResult, +text]
      };
    } catch (event) {
      return {
        text: "error",
        result: "error",
        prevResult: "error"
      };
    }
  }
  render() {
    const buttons = [
      "+",
      "-",
      "*",
      "/",
      "%",
      "(",
      ")",
      "=",
      "1",
      "2",
      "3",
      "CE",
      "4",
      "5",
      "6",
      "C",
      "7",
      "8",
      "9",
      "~",
      ".",
      "0"
    ];
    return (
      <div>
        <div className="resultbar">
          <input
            style={{ height: "30px", width: "200px", font: "20px" }}
            name="text"
            autoFocus="autofocus"
            value={this.state.text}
            onChange={this.onChange}
          />
        </div>

        <div className="history">
          <h2>History</h2>
          <h3 style={{ color: "red" }}>{this.state.result} </h3>
          <p>{this.state.prevResult}</p>
        </div>
        <div className="button">
          {buttons.map(x => {
            return (
              <button name="text" value={x} onClick={this.handleChange}>
                {x}
              </button>
            );
          })}
        </div>
      </div>
    );
  }
}
export default Layout;

Instructions

Follow the steps carefully to get the output easily.

  1. Install the Node.js and React on your IDE(preferable Visual Studio Code).
  2. Create React Application using npx create-react-app foldername.
  3. cd foldername.
  4. Open the folder in IDE.
  5. Copy the code using "copy" button above,then create a file in the name of Layout.js and paste it in Layout.js file.(refer demo for additional files).
  6. Remove import style.css.(line no 2)
  7. Open the terminal from IDE.
  8. npm start to run the file.


You can also refer this url DEMO for getting the above output.

I hope you found this useful. I have added the link to dependent libraries, version information in the following sections.


I found this code snippet by searching for 'Calculator Implementation in React' in kandi. You can try any such use case!

Environment Tested

I tested this solution in the following versions. Be mindful of changes when working with other versions.

  1. The solution is created in VS Code 1.73.1 version.
  2. The solution is tested on Nodejs 16.14.2 version.
  3. react 18.2.0 version


Using this solution, we are able to create Create a Calculator using React with simple steps. This process also facilities an easy way to use, hassle-free method to create a hands-on working version of code which would help us to Create a Calculator using React.

Dependent Libraries


create-react-appby facebook

JavaScript doticonstar image 100082 doticonVersion:v5.0.1doticon
License: Permissive (MIT)

Set up a modern web app by running one command.

Support
    Quality
      Security
        License
          Reuse

            create-react-appby facebook

            JavaScript doticon star image 100082 doticonVersion:v5.0.1doticon License: Permissive (MIT)

            Set up a modern web app by running one command.
            Support
              Quality
                Security
                  License
                    Reuse

                      You can search for any dependent library on kandi like 'react'.

                      Support

                      1. For any support on kandi solution kits, please use the chat
                      2. For further learning resources, visit the Open Weaver Community learning page.

                      See similar Kits and Libraries