Untitled

 avatar
unknown
plain_text
a year ago
2.5 kB
11
Indexable
import React, { useState } from "react";

function Calculator() {
    const [input, setInput] = useState("");
    const handleClick = (value) => {
        setInput((prev) => prev + value);
    }
    const handleClear = () => {
        setInput("");
    }
    const handleCalculate = () => {
        try {
            setInput(eval(input).toString());
        }
        catch (error) {
            console.error(error);
        }
    }
    return (
        <div style={styles.container}>
            <div style={styles.display}>{input || 0}</div>
            <div style={styles.buttons}>
                <button onClick={handleClear}>C</button>
                <button onClick={() => handleClick("/")}>/</button>
                <button onClick={() => handleClick("*")}>*</button>
                <button onClick={() => handleClick("-")}>-</button>

                <button onClick={() => handleClick("7")}>7</button>
                <button onClick={() => handleClick("8")}>8</button>
                <button onClick={() => handleClick("9")}>9</button>
                <button onClick={() => handleClick("+")}>+</button>

                <button onClick={() => handleClick("4")}>4</button>
                <button onClick={() => handleClick("5")}>5</button>
                <button onClick={() => handleClick("6")}>6</button>
                <button style={styles.equals} onClick={handleCalculate}>=</button>

                <button onClick={() => handleClick("1")}>1</button>
                <button onClick={() => handleClick("2")}>2</button>
                <button onClick={() => handleClick("3")}>3</button>
                <button onClick={() => handleClick("0")}>0</button>
                <button onClick={() => handleClick(".")}>.</button>
            </div>
        </div>
    ); 
}

const styles = {
    container: {
        width : "250px",
        margin : "50px auto",
        border : "2px solid #333",
        borderRadius : "8px",
        overflow : "hidden",
        fontFamily : "Arial, sans-serif"
    },
    display: {
        background : "#222",
        color : "white",
        fontSize : "2em",
        textAlign : "right",
        padding : "10px"
    },
    buttons: {
        display : "grid",
        gridTemplateColumns : "repeat(4, 1fr)",
        gap : "5px",
        padding : "10px"
    },
    equals: {
        gridRow: "span 2",
        background : "#4CAF50",
        color : "white"
    }
};

export default Calculator;
Editor is loading...
Leave a Comment