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

Tutorial Web Programming

A01 JavaScript01 HelloWorld A02 JavaScript02 HelloWorld by Class A03 JavaScript03 Object A04 JavaScript04 Prototype A05 JavaScript05 Closure A06 NodeJS01 HelloWorld A07 npm01 Intro A08 React01 HelloWorld A09 AngularJS01 HelloWorld A10 VueJS01 HelloWorld A11 webpack01 Intro A12 ASPNET01 HelloWorld A13 Flask01 HelloWorld A14 Windows CommandLine A15 GoogleCloudPlatform Product A16 GoogleAppEngine01 HelloWorld A17 WhatIs01 WebServer A18 WhatIs02 API A19 WhatIs03 Linux A20 Linux CommandLine A21 Android01 HelloWorld A22 Android02 Gradle A23 Maven HelloWorld A24 Nancy HelloWorld A25 WhatIs04 Protocol A26 HowTo01 Install Ubuntu Desktop A27 HowTo02 Install WebServer on Ubuntu A28 HowTo Install PrestaShop with php8 A29 HowTo Install XAMPP on Ubuntu A30 HowTo Install WordPress on XAMPP on Ubuntu A31 React02 Create and Run React Application A32 React03 Simple Web Application - People Counter A33 React04 Simple Web Application - People Counter 2 A34 React05 Web Application - Dictionary A35 React06 Web Application - Multiple Pages A36 React07 Web Application - Multiple Pages with APIs A37 React08 Web Application - Calculator A38 React09 Web Application - SpO2 Tracker A39 React10 Web Application - Smart Parking A40 Create AWS EC2 instance A41 Create WebApp Using Django on EC2 A42 JavaScript06 Understanding JavaScript Loop A43 HowTo Install CKEditor5 on Your Website

React03: Simple Web Application - People Counter

หลังจากที่ได้ลองสร้าง React Application กันไปในบทความ React02: Create and Run React Application ก่อนหน้านี้แล้ว ในบทความนี้ เราจะมาทดลองทำ Web Application สำหรับ People Counter ด้วย React แบบง่าย ๆ เพื่อเรียนรู้การใช้ JSX และ state นอกจากนี้เราจะทดลองนำ Bootstrap เข้ามาใช้เพื่อทำให้เว็บมีหน้าตาสวยงามกันด้วยครับ 

วัตถุประสงค์

จากสถานการณ์โควิด-19 ที่ผ่านมา หลาย ๆ ร้านค้าจำเป็นต้องจำกัดจำนวนคนที่สามารถอยู่ในพื้นที่ของร้านได้ ณ เวลานั้น ๆ เช่น สามารถรับลูกค้าได้ 1 คนต่อพื้นที่ร้าน 2 ตารางเมตร เป็นต้น ถ้าคนครบจำนวนที่จำกัดแล้วก็จะไม่อนุญาตให้ลูกค้าเข้าร้านเพิ่ม ซึ่งสำหรับร้านขนาดใหญ่ที่มีคนเข้าออกตลอดเวลาการจะใช้คนมานั่งนับก็อาจจะเกิดข้อผิดพลาดได้ง่าย ดังนั้นเราจะมาลองทำแอปพลิเคชันแบบง่าย ๆ สำหรับนับคนที่อยู่ในร้านกันครับ

เตรียมตัวก่อนเริ่มทำ

1. เปิดโปรแกรม Command Prompt หรือ Terminal แล้วสร้าง React application ด้วยคำสั่ง

create-react-app re_ws_11

 

2. พิมพ์คำสั่งต่อไปนี้เพื่อเข้าไปที่โฟลเดอร์แอปพลิเคชันที่สร้าง แล้วทำการจำลองเครื่องให้เป็น server เพื่อทดสอบการทำงานของแอปที่สร้าง

cd re_ws_11
npm start

 

3. หน้าเว็บ http://localhost:3000 จะถูกเปิดขึ้นมาโดยอัตโนมัติ ถ้าไม่มีให้รอสักพักแล้วเปิดหน้าเว็บนี้ด้วยตนเอง ถ้าเห็นหน้าเว็บดังภาพแสดงว่าทุกอย่างเรียบร้อยพร้อมใช้งานครับ เสร็จแล้วให้หยุดการทำงานของ server นี้ก่อน โดยกลับไปที่หน้าต่าง Command Prompt แล้วกดคีย์บอร์ดปุ่ม Ctrl + C

Design

Code Part: People Counter 

ก่อนอื่นเราจะมาทำส่วนตัวนับจำนวนคนกันครับ โดยในส่วนนี้จะประกอบด้วยส่วนข้อความซึ่งแสดงจำนวนคนในปัจจุบัน และปุ่มกดเวลาคนเข้า (ปุ่ม In) เวลาคนออก (ปุ่ม Out) 

1. เปิดไฟล์ App.js ในโฟลเดอร์ src ของแอปพลิเคชัน เช่นในตัวอย่างนี้คือ D:\w721\re_ws_11\src ขึ้นมาด้วยโปรแกรม Text Editor เช่น Notepad++ 

2. แก้โค้ดในไฟล์ App.js เป็นดังนี้

import React, {useState} from 'react';
import './App.css';

function App() {
    const [dataState, setDataState] = useState(
        {
            maxPeople: 10,
            currentPeople: 0
        }
    );
    const addPeople = () => {
        setDataState({
            maxPeople: dataState.maxPeople,
            currentPeople: dataState.currentPeople + 1
        })
    }
    const minusPeople = () => {
        setDataState({
            maxPeople: dataState.maxPeople,
            currentPeople: dataState.currentPeople - 1
        })
    }

    return (
        <div className="App">
            <div>
            Max: {dataState.maxPeople} คน
            </div>
            <hr />
            <div>
            Current: {dataState.currentPeople} คน
            </div>
            <div>
                <button onClick={addPeople}>In</button>
                <button onClick={minusPeople}>Out</button>
            </div>
        </div>
    );
}
export default App;

3. หลังจากบันทึกไฟล์เรียบร้อยแล้ว ให้พิมพ์คำสั่งต่อไปนี้เพื่อทดสอบการทำงานของแอปที่สร้าง

npm start

 

4. ไปที่หน้าเว็บ http://localhost:3000 แล้วทดลองกดปุ่ม In และปุ่ม Out จากนั้นสังเกตการเปลี่ยนแปลงที่เกิดขึ้น

Code Part: Bootstrap 

หลังจากลองทำหน้าเว็บแบบง่าย ๆ แล้ว ตอนนี้เราจะมาลองปรับแต่งหน้าตาของเว็บด้วย Bootstrap ซึ่งเป็น framework ยอดนิยมตัวหนึ่งกันครับ การใช้ Bootstrap นี้มีข้อดีคือเราไม่ต้องเขียนไฟล์ .css หรือเขียนโค้ดเพื่อกำหนด style ของ element แต่ละตัวเอง นอกจากนี้ Bootstrap ยังมีผู้ใช้งานอย่างแพร่หลายจึงมีตัวอย่างให้เราดูมากมายในอินเตอร์เน็ตครับ

1. ไปที่หน้าต่าง Command Prompt หรือ Terminal ที่รัน Server อยู่แล้วสั่งให้หยุดการทำงานโดยกดคีย์บอร์ดปุ่ม Ctrl + C

2. ติดตั้ง Bootstrap ในโฟลเดอร์แอปพลิเคชัน re_ws_11 โดยพิมพ์คำสั่ง

npm install bootstrap

 

3. แก้โค้ดในไฟล์ App.js เพื่อเรียกใช้งาน Bootstrap ดังนี้

  • ที่หัวไฟล์ทำการ import ไฟล์ CSS ของ Bootstrap
  • ส่วน return เพิ่ม className ที่ element ต่าง ๆ
import React, {useState} from 'react';
import 'bootstrap/dist/css/bootstrap.min.css';

function App() {
    const [dataState, setDataState] = useState(
        {
            maxPeople: 10,
            currentPeople: 0
        }
    );
    const addPeople = () => {
        setDataState({
            maxPeople: dataState.maxPeople,
            currentPeople: dataState.currentPeople + 1
        })
    }
    const minusPeople = () => {
        setDataState({
            maxPeople: dataState.maxPeople,
            currentPeople: dataState.currentPeople - 1
        })
    }

    return (
        <div className="card text-center col-6 mx-auto mt-2">
            <div>
            Max: {dataState.maxPeople} คน
            </div>
            <hr />
            <div>
            Current: {dataState.currentPeople} คน
            </div>
            <div>
              <button className="btn btn-success m-1" onClick={addPeople}>In</button>
              <button className="btn btn-danger m-1" onClick={minusPeople}>Out</button>
            </div>
        </div>
    );
}
export default App;

4. หลังจากบันทึกไฟล์เรียบร้อยแล้ว ให้พิมพ์คำสั่ง npm start เพื่อทดสอบการทำงานของแอปพลิเคชัน จะเห็นว่าหน้าตาของเว็บเปลี่ยนไปดังภาพ

Code Part: Maximum People Setting 

ในส่วนสุดท้ายนี้เราจะมาทำตัวตั้งค่าจำนวนลูกค้าสูงสุดที่ร้านสามารถรับได้กันครับ และเมื่อมีลูกค้าเข้าร้านถึงจำนวนที่กำหนดไว้ก็ให้ระบบแสดงข้อความเตือนเพื่อให้พนักงานไม่รับลูกค้าเข้าร้านอีก

1. แก้โค้ดในไฟล์ App.js ดังนี้

  • เพิ่ม object ชื่อ maxInputRef สำหรับอ้างอิงค่า input ที่ผู้ใช้งานจะกรอกข้อมูลจำนวนคนใน input element 
  • เพิ่มฟังก์ชัน setMaxPeople สำหรับตั้งค่า maxPeople
  • เพิ่ม input element สำหรับรับค่าโดยอ้างอิงกับ maxInputRef และเพิ่มปุ่ม Set สำหรับตั้งค่าที่รับเข้ามา
  • เพิ่มเงื่อนไขให้ตรวจสอบจำนวนลูกค้าในร้านเทียบกับค่าสูงสุด ถ้าถึงค่าสูงสุดแล้วให้แสดงข้อความเตือน
import React, {useState} from 'react';
import 'bootstrap/dist/css/bootstrap.min.css';

function App() {
    const [dataState, setDataState] = useState(
        {
            maxPeople: 10,
            currentPeople: 0
        }
    );
    const addPeople = () => {
        ... }
    const minusPeople = () => {
        ... }

    const maxInputRef = React.createRef();
    const setMaxPeople = () => {
        setDataState({
            maxPeople: maxInputRef.current.value,
            currentPeople: dataState.currentPeople
        })
    }

    return (
        <div className="card text-center col-6 mx-auto mt-2">
            Max: {dataState.maxPeople} คน
            <div className="input-group">
                <input type="number" name="maxPeopleNew" className="form-control"
                defaultValue={dataState.maxPeople} ref={maxInputRef} />
                <button className="btn btn-success"
                onClick={setMaxPeople.bind()}>Set</button>
            </div><hr />
            <div>
            <p>Current: {dataState.currentPeople} คน</p>
            <p>{dataState.currentPeople >= dataState.maxPeople?
              "คำเตือน! จำนวนลูกค้าถึงจำนวนที่จำกัดไว้แล้ว":""}</p>
            </div>
            <div>
              <button className="btn btn-success m-1" onClick={addPeople}>In</button>
              <button className="btn btn-danger m-1" onClick={minusPeople}>Out</button>
            </div>
        </div>
    );
}
export default App;

2. บันทึกไฟล์ แล้วทดสอบตั้งค่าจำนวนคนสูงสุด และลองเพิ่มจำนวนลูกค้าเข้าร้านจนถึงค่าสูงสุดที่ตั้งค่าไว้

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

ในบทความต่อไป เราจะมาลองทำเว็บสำหรับนับจำนวนคนสำหรับผู้ประกอบการที่มีร้านหลายสาขากัน แล้วพบกันใหม่บทความหน้านะครับ



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

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ 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

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

C Article


C++ Article


Java Article


C#.NET Article


VB.NET Article


Python Article


Golang Article


JavaScript Article


Perl Article


Lua Article


Rust Article


Article


Python


Python Numpy


Python Machine Learning



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

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
แผนที่ ที่ตั้งของอาคารของเรา