Close Menu
  • Home
  • Programming
    • JavaScript
    • TypeScript
    • Node.js
    • Python
    • PHP
    • CSS
    • HTML
  • Framework
    • Express.js
    • Laravel
    • Nest.js
    • React.js
    • Expo
    • React Native
    • Next.js
    • Strapi (Headless CMS)
    • WordPress (CMS)
  • Hot Topics
    • Software Architect
    • Artificial Intelligence
    • Data Science
    • Chat Bot
    • Machine Learning
      • Library JS
        • Danfo.js
    • Natural Language Processing
    • Proof of Concept
    • Kampus
  • Roles
    • Data Engineer
    • Software Engineer
    • DevOps
      • Docker
      • Jenkins
      • VPS (Virtual Private Server)
      • Ubuntu Server
  • Databases
    • Postgre SQL
    • SQL
    • SQL Server
    • Redis

Subscribe to Updates

Get the latest creative news from FooBar about art, design and business.

What's Hot

Cara Install Docker di VPS Ubuntu 20.04

October 13, 2024

Cara Install WordPress Menggunakan Docker di VPS

October 13, 2024

Membuat Program Deteksi Data KTP dari Kode Digit dengan JavaScript

October 6, 2024
Facebook X (Twitter) Instagram
Lampung DevLampung Dev
  • Home
  • Programming
    • JavaScript
    • TypeScript
    • Node.js
    • Python
    • PHP
    • CSS
    • HTML
  • Framework
    • Express.js
    • Laravel
    • Nest.js
    • React.js
    • Expo
    • React Native
    • Next.js
    • Strapi (Headless CMS)
    • WordPress (CMS)
  • Hot Topics
    • Software Architect
    • Artificial Intelligence
    • Data Science
    • Chat Bot
    • Machine Learning
      • Library JS
        • Danfo.js
    • Natural Language Processing
    • Proof of Concept
    • Kampus
  • Roles
    • Data Engineer
    • Software Engineer
    • DevOps
      • Docker
      • Jenkins
      • VPS (Virtual Private Server)
      • Ubuntu Server
  • Databases
    • Postgre SQL
    • SQL
    • SQL Server
    • Redis
Facebook X (Twitter) Instagram
Lampung DevLampung Dev
Home ยป Membuat Aplikasi Latihan Mengetik Sederhana dengan React
React

Membuat Aplikasi Latihan Mengetik Sederhana dengan React

Abdan Zam Zam RamadhanBy Abdan Zam Zam RamadhanJune 25, 2024Updated:October 6, 2024No Comments4 Mins Read
Share Facebook Twitter Pinterest LinkedIn Tumblr Reddit Telegram Email
Membuat Aplikasi Latihan Mengetik Sederhana dengan React
Membuat Aplikasi Latihan Mengetik Sederhana dengan React
Share
Facebook Twitter LinkedIn Pinterest Email

LampungDev – Mengetik dengan cepat dan akurat adalah keterampilan penting dalam dunia digital saat ini. Untuk melatih keterampilan mengetik, kita dapat membuat aplikasi latihan mengetik menggunakan React. Dalam artikel ini, kita akan membuat aplikasi sederhana yang memungkinkan pengguna untuk mengetik teks yang ditampilkan di layar, dan menghitung kecepatan serta akurasi mengetik mereka.

Daftar Isi

Toggle
  • Preview
  • Langkah-langkah Membuat Aplikasi
    • 1. Setup Proyek React
    • 2. Struktur Folder
    • 3. Membuat Komponen TypingArea
    • 4. Membuat Komponen Results
    • 5. Menggabungkan Semua Komponen di App Component
    • 6. Menambahkan Gaya dengan CSS
    • 7. Menjalankan Aplikasi

Preview

Home
Typing
Result

Langkah-langkah Membuat Aplikasi

1. Setup Proyek React

Pertama-tama, kita perlu membuat proyek React baru. Jika Anda belum menginstal create-react-app, Anda dapat menginstalnya terlebih dahulu. Kemudian, jalankan perintah berikut untuk membuat proyek baru:

npx create-react-app typing-practice
cd typing-practice

2. Struktur Folder

Kita akan menjaga struktur folder sederhana seperti berikut:

typing-practice/
โ”œโ”€โ”€ public/
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ components/
โ”‚       โ”œโ”€โ”€ TypingArea.js
โ”‚       โ””โ”€โ”€ Results.js
โ”œโ”€โ”€ index.js   
โ”œโ”€โ”€ App.js
โ”œโ”€โ”€ index.css
โ”œโ”€โ”€ package.json
โ””โ”€โ”€ README.md

3. Membuat Komponen TypingArea

Komponen TypingArea adalah tempat di mana pengguna akan mengetik teks yang diberikan. Berikut adalah kode untuk komponen TypingArea:

// src/components/TypingArea.js
import React, { useState, useEffect } from 'react';

const TypingArea = ({ textToType, handleResults }) => {
    const [userInput, setUserInput] = useState('');
    const [startTime, setStartTime] = useState(null);
    const [endTime, setEndTime] = useState(null);

    useEffect(() => {
        if (userInput.length === 1 && !startTime) {
            setStartTime(new Date());
        }

        if (userInput.length >= textToType.length && !endTime) {
            setEndTime(new Date());
            const timeTaken = (new Date() - startTime) / 1000;
            handleResults(timeTaken, userInput);
        }
    }, [userInput, textToType, startTime, endTime, handleResults]);

    const handleChange = (e) => {
        setUserInput(e.target.value);
    };

    const renderTextWithColor = () => {
        return textToType.split('').map((char, index) => {
            let color;
            if (index < userInput.length) {
                color = char === userInput[index] ? 'green' : 'red';
            }
            return <span key={index} style={{ color }}>{char}</span>;
        });
    };

    return (
        <div className="typing-area">
            <p>{renderTextWithColor()}</p>
            <textarea
                value={userInput}
                onChange={handleChange}
                disabled={!!endTime}
                placeholder="Start typing here..."
            />
        </div>
    );
};

export default TypingArea;

4. Membuat Komponen Results

Komponen Results akan menampilkan hasil latihan mengetik, seperti waktu yang diambil dan akurasi. Berikut adalah kode untuk komponen Results:

// src/components/Results.js
import React from 'react';

const Results = ({ timeTaken, accuracy, totalErrors, wordsPerSecond }) => {
    return (
        <div className="results">
            <h2>Results</h2>
            <p>Time Taken: {timeTaken} seconds</p>
            <p>Accuracy: {accuracy}%</p>
            <p>Total Errors: {totalErrors}</p>
            <p>Words Per Second: {parseFloat(wordsPerSecond).toFixed(2)}</p>
        </div>
    );
};

export default Results;

5. Menggabungkan Semua Komponen di App Component

Komponen utama yang menggabungkan semuanya adalah App.js. Berikut adalah kode untuk komponen App:

// App.js
import React, { useState } from 'react';
import TypingArea from './components/TypingArea';
import Results from './components/Results';
import './index.css';

const generateRandomText = () => {
  const subjects = ["The quick brown fox", "A lazy dog", "A clever cat", "An agile monkey"];
  const verbs = ["jumps over", "runs around", "sits on", "looks at"];
  const objects = ["the lazy dog", "a high fence", "a small mouse", "the big tree"];

  const patterns = [
    `${subjects[Math.floor(Math.random() * subjects.length)]} ${verbs[Math.floor(Math.random() * verbs.length)]} ${objects[Math.floor(Math.random() * objects.length)]}`,
    `${subjects[Math.floor(Math.random() * subjects.length)]} and ${subjects[Math.floor(Math.random() * subjects.length)]} ${verbs[Math.floor(Math.random() * verbs.length)]}`,
    `In the park, ${subjects[Math.floor(Math.random() * subjects.length)]} ${verbs[Math.floor(Math.random() * verbs.length)]} ${objects[Math.floor(Math.random() * objects.length)]}`
  ];

  return patterns[Math.floor(Math.random() * patterns.length)];
};

const App = () => {
  const [textToType] = useState(generateRandomText());
  const [results, setResults] = useState(null);

  const handleResults = (timeTaken, userInput) => {
    const wordsTyped = userInput.trim().split(' ').length;
    const correctChars = textToType.split('').filter((char, index) => char === userInput[index]).length;
    const accuracy = (correctChars / textToType.length) * 100;
    const totalErrors = textToType.length - correctChars;
    const wordsPerSecond = wordsTyped / timeTaken;
    setResults({ timeTaken, accuracy, totalErrors, wordsPerSecond });
  };

  return (
    <div className="App">
      <h1>Typing Practice</h1>
      {!results ? (
        <TypingArea textToType={textToType} handleResults={handleResults} />
      ) : (
        <Results
          timeTaken={results.timeTaken}
          accuracy={results.accuracy.toFixed(2)}
          totalErrors={results.totalErrors}
          wordsPerSecond={results.wordsPerSecond}
        />
      )}
    </div>
  );
};

export default App;

6. Menambahkan Gaya dengan CSS

Tambahkan sedikit CSS untuk memberikan gaya dasar pada aplikasi kita. Berikut adalah kode untuk index.css:

/* index.css */
.App {
  text-align: center;
  margin: 2rem;
}

.typing-area {
  margin: 2rem 0;
}

.typing-area p {
  font-size: 1.5rem;
  margin-bottom: 1rem;
}

textarea {
  width: 100%;
  height: 100px;
  padding: 10px;
  font-size: 1.2rem;
}

.results {
  margin: 2rem 0;
}

7. Menjalankan Aplikasi

Pastikan Anda sudah menjalankan aplikasi React dengan perintah berikut:

npm start

Dengan mengikuti langkah-langkah di atas, Anda telah berhasil membuat aplikasi latihan mengetik sederhana menggunakan React. Anda dapat memperluas fitur aplikasi ini dengan menambahkan lebih banyak teks untuk latihan, statistik lebih detail, dan fitur-fitur lainnya sesuai kebutuhan. Selamat mencoba!

[SOURCE CODE]

antarmuka pengguna dengan react aplikasi mengetik dengan react aplikasi typing practice aplikasi web dengan react belajar react js belajar react untuk aplikasi web cara membuat aplikasi latihan mengetik komponen react latihan mengetik dengan javascript latihan mengetik interaktif membangun aplikasi dengan react membuat aplikasi dengan react membuat aplikasi latihan mengetik mengetik cepat dengan react mengetik teks dengan react react js tutorial react untuk pemula tutorial membuat aplikasi react tutorial react virtual DOM react
Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
Previous Article10 Plugin VS Code yang Wajib Developer Install
Next Article Membuat Program Deteksi Data KTP dari Kode Digit dengan JavaScript
Abdan Zam Zam Ramadhan
  • Website
  • LinkedIn

Seorang profesional teknologi yang berfokus pada pengembangan aplikasi (web & Android), DevOps, teknologi data, serta spesialisasi dalam Natural Language Processing (NLP) dan pengembangan ChatBot berbasis NLP. Memiliki keahlian mendalam di ekosistem Node.js dan aktif berkontribusi pada berbagai proyek open-source melalui library JavaScript di NPM. Rutin menulis artikel dan panduan teknis seputar pemrograman di LampungDev.com, berbagi wawasan seputar tren teknologi terbaru dan solusi pemrograman inovatif.

Demo
Top Posts

Cara Menggunakan Foreach di Node.js?

February 13, 202468 Views

Cara Install XAMPP (Apache, MariaDB, PHP dan Perl) pada Windows

November 26, 202350 Views

Bagaimana Prospek Karir Jurusan Teknik Informatika?

February 14, 202447 Views

Lagi Viral! S3 Computer Science: Perlukah Bisa Ngoding?

May 24, 202438 Views

10 Plugin VS Code yang Wajib Developer Install

June 15, 202437 Views
Stay In Touch
  • Facebook
  • YouTube
  • WhatsApp
  • Instagram
  • LinkedIn
Latest Reviews

Subscribe to Updates

Get the latest tech news from FooBar about tech, design and biz.

Demo
Most Popular

Cara Menggunakan Foreach di Node.js?

February 13, 202468 Views

Cara Install XAMPP (Apache, MariaDB, PHP dan Perl) pada Windows

November 26, 202350 Views

Bagaimana Prospek Karir Jurusan Teknik Informatika?

February 14, 202447 Views
Our Picks

Cara Install Docker di VPS Ubuntu 20.04

October 13, 2024

Cara Install WordPress Menggunakan Docker di VPS

October 13, 2024

Membuat Program Deteksi Data KTP dari Kode Digit dengan JavaScript

October 6, 2024

Subscribe to Updates

Get the latest creative news from FooBar about art, design and business.

Facebook X (Twitter) Instagram Pinterest
  • Jobs
  • Project Freelance
  • About Me
  • Contact
Copyright © 2025 Lampung Dev. Developed by Abdan Zam Zam Ramadhan.

Type above and press Enter to search. Press Esc to cancel.

 

Loading Comments...