สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

React

React - Simple Web App - People Counter React - Simple Web App - People Counter 2 React - Web App - Dictionary React - Web App - Multiple Pages React - Web App - Multiple Pages with APIs React - Web App - Calculator React - Web App - Smart Parking React - Create and Run React Application React - Web App - SpO2 Tracker

React08: Web Application - Calculator

ในบทความนี้เราจะมาทดลองใช้ React สร้างเว็บเครื่องคิดเลขแบบมีปุ่มกดแบบเดียวกับเครื่องคิดเลขของจริง โดยส่งข้อมูลจาก Form ด้วย GET Method กัน 

Design

Code Part 

1. สร้าง React application (ถ้าใครไม่รู้ว่าต้องสร้างอย่างไรให้อ่านบทความ React02: Create and Run React Application) ในตัวอย่างนี้จะตั้งชื่อว่า re_ws_08_2

2. สร้างไฟล์ mystyle.css ในโฟลเดอร์ src ในโฟลเดอร์แอปที่สร้างในขั้นตอนที่ 1 และในไฟล์ให้เขียน Code ดังนี้ 

form {
    padding: 10px;
    border-style: solid;
    width: 270px;
}
input[type=text] {
    font-size: 24px;
    width: 254px;
    height: 50px;
    margin: 4px 2px;
}
button {
    border: none;
    font-size: 24px;
    width: 60px;
    height: 60px;
    margin: 4px 2px;
    cursor: pointer;
}

3. พิมพ์โค้ดต่อไปนี้ลงไปในไฟล์ src/App.js ในโฟลเดอร์แอปที่สร้างในขั้นตอนที่ 1 จากนั้นบันทึกไฟล์ให้เรียบร้อย (ระวังเรื่องตัวพิมพ์ใหญ่และตัวพิมพ์เล็กของชื่อตัวแปรด้วย)

import React from 'react';
import './mystyle.css';

class App extends React.Component {
    static num1 = 0;
    static num2 = 0;
    static signSelect = "";
    static isClearTextBoxNext = false;

    constructor(props) {
        super(props);
        this.state = {button: "", num: ""};
    }

    submitHandler = (event) => {
        event.preventDefault();

        let numText = this.state.num;
        let inputText = this.state.button;

        if (inputText === "plus") {
            this.num1 = parseFloat(numText);
            this.signSelect = "+";
            this.isClearTextBoxNext = true;
        } else if (inputText === "minus") {
            this.num1 = parseFloat(numText);
            this.signSelect = "-";
            this.isClearTextBoxNext = true;
        } else if (inputText === "mul") {
            this.num1 = parseFloat(numText);
            this.signSelect = "*";
            this.isClearTextBoxNext = true;
        } else if (inputText === "div") {
            this.num1 = parseFloat(numText);
            this.signSelect = "/";
            this.isClearTextBoxNext = true;
        } else if (inputText === "equal") {
            this.num2 = parseFloat(numText);

        if (this.signSelect === "+"){
        	numText = this.num1 + this.num2;
        } else if (this.signSelect === "-") {
        	numText = this.num1 - this.num2;
        } else if (this.signSelect === "*") {
        	numText = this.num1 * this.num2;
        } else if (this.signSelect === "/") {
        	if (this.num2 === 0) {
        		numText = "Cannot Divide"
        	} else {
        		numText = this.num1 / this.num2;
        	}
        }

            this.isClearTextBoxNext = true;
        } else if (inputText === "clear") {
            this.num1 = 0;
            this.num2 = 0;
            this.signSelect = "";
            this.isClearTextBoxNext = false;
            numText = "";
        } else {
            if (this.isClearTextBoxNext) {
                numText = "";
                this.isClearTextBoxNext = false;
            }
            numText += inputText;
        }

        this.setState({num: numText});console.log(this.state);
    }

    render() {
      return (
      <div>
        <h1>My calculator</h1>
        <form onSubmit={this.submitHandler}>
        <input type="text" name="num" value={this.state.num || ''} />
        <br/><br/>
        <button type="submit" onClick={() => (this.state.button = "7")} value="7">7</button>
        <button type="submit" onClick={() => (this.state.button = "8")} value="8">8</button>
        <button type="submit" onClick={() => (this.state.button = "9")} value="9">9</button>
        <button type="submit" onClick={() => (this.state.button = "div")} value="div">÷</button>
        <br/>
        <button type="submit" onClick={() => (this.state.button = "4")} value="4">4</button>
        <button type="submit" onClick={() => (this.state.button = "5")} value="5">5</button>
        <button type="submit" onClick={() => (this.state.button = "6")} value="6">6</button>
        <button type="submit" onClick={() => (this.state.button = "mul")} value="mul">×</button>
        <br/>
        <button type="submit" onClick={() => (this.state.button = "1")} value="1">1</button>
        <button type="submit" onClick={() => (this.state.button = "2")} value="2">2</button>
        <button type="submit" onClick={() => (this.state.button = "3")} value="3">3</button>
        <button type="submit" onClick={() => (this.state.button = "minus")} value="minus">-</button>
        <br/>
        <button type="submit" onClick={() => (this.state.button = "0")} value="0" style={{width: "128px"}}>0</button>
        <button type="submit" onClick={() => (this.state.button = ".")} value=".">.</button>
        <button type="submit" onClick={() => (this.state.button = "plus")} value="plus">+</button>
        <br/>
        <button type="submit" onClick={() => (this.state.button = "clear")} value="clear" style={{width: "128px"}}>Clear</button>
        <button type="submit" onClick={() => (this.state.button = "equal")} value="equal" style={{width: "128px"}}>=</button>
        </form>
      </div>
      );
    }
}

export default App;

4. พิมพ์คำสั่ง npm start เพื่อรันแอป หน้าเว็บ http://localhost:3000 จะถูกเปิดขึ้นมาซึ่งถ้าทุกอย่างถูกต้องจะได้หน้าเว็บเครื่องคิดเลขดังภาพ

เสร็จแล้วครับ เครื่องคิดเลขของเรา หน้าตาสวยงามน่าใช้ทีเดียวเลยใช่ไหมครับ

Challenge สำหรับผู้เรียนที่อยากทำอะไรเพิ่มเติม 

ให้ผู้เรียนแก้ไขโค้ดในไฟล์ re_ws_08_2/src/App.js เพื่อให้เครื่องคิดเลขที่เราสร้างสามารถกดปุ่มคำนวณแบบต่อเนื่องได้ 
คำอธิบาย: หากผู้เรียนทดลองกดใช้งานเว็บเครื่องคิดเลขนี้ดู จะพบว่าถึงแม้ว่าเครื่องคิดเลขของเราจะสามารถคำนวณได้ถูกต้องเมื่อใส่จำนวน 1 จำนวน ตามด้วยเครื่องหมายบวก/ลบ/คูณ/หาร ตามด้วยจำนวนอีก 1 จำนวน แล้วกดปุ่มเท่ากับ แต่เราไม่สามารถกดปุ่มแล้วให้คำนวณต่อเนื่องแบบเครื่องคิดเลขจริง ๆ ได้ เช่น ถ้าผู้เรียนลองกดปุ่มต่อไปนี้ 1 + 1 + 1 + 1 + 1 = ตามลำดับในเครื่องคิดเลขจริงจะพบว่าได้ผลลัพธ์เป็น 5 แต่ถ้ากดในเครื่องคิดเลขที่เราสร้างจะได้ผลลัพธ์เป็น 2

 

ถ้าใครสนใจอยากเรียนเรื่อง React ให้ลึกซึ้งยิ่งขึ้นก็ขอแนะนำ คอร์สเรียนเขียนโปรแกรม React ฉบับไม่โหด (W721) แต่ถ้าผู้อ่านยังไม่มีพื้นฐานการทำเว็บมากก่อน ก็ขอแนะนำคอร์ส Web Programming ของทาง EPT ซึ่งจะสอนตั้งแต่พื้นฐานครับ สามารถคลิกที่นี่เพื่อดูรายละเอียดคอร์ส Web Programming หรือติดต่อได้ที่ 085-350-7540

ในบทความต่อไป เราจะมาลองทำเว็บ SpO2 Tracker กัน แล้วพบกันใหม่บทความหน้านะครับ


Tag ที่น่าสนใจ: react web_application calculator frontend_development javascript react_components html_form styling_with_css event_handling math_operations user_interface_design


บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา