Lädt...


🔧 Bagaimana Cara Memahami useState Hooks pada React/Next JS?


Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to

Image description

Buat temen-temen yang mungkin baru saja belajar tentang react js/next js atau belum pernah belajar sama sekali. Sepertinya artikel ini wajib untuk dibaca sampai akhir, tenang nggak banyak kok. Kalau temen-temen pernah buka dokumentasi tentang useEffect dan berakhir pusing, saya akan coba bantu jelaskan sedikit.

Image description

Gambar diatas merupakan alur kerja react ketika merender sebuah komponen. Nah, tentu saja kita sebagai developer gak mau tau dong bagaimana proses yang berjalan dibelakang yang terpenting kita maunya komponen harus bisa dirender sekali ataupun berkali kali. Tapi, pertanyaanya sekarang, bagaimana cara kita untuk mengubah hasil render komponen yang sudah dirender react? Tenang, jangan dipikir terlalu jauh, useEffect hooks ini adalah solusinya.

Image description

Kalau kita lihat dokumentasi yang disediakan oleh React JS, disana dijelaskan bahwa useEffect ini adalah hasil kombinasi dari componentDidMount, componentDidUpdate, dan componentWillUnmount ketika temen-temen menggunakan Class Component, tetapi jika temen-temen menggunakan Functional Component maka, temen-temen bisa menggunakan useEffect hooks ini. Kita langsung praktik pakai coding biar gak kebayang-bayang terus.

import React, { useEffect, useState } from 'react'

const Home = () => {
    const [counter, setCounter] = useState<number>(0);

    useEffect(() => {
        console.log('Running usEffect tanpa Array')
    })

    useEffect(() => {
        console.log('Running usEffect dengan array kosong')
    }, [])

    useEffect(() => {
        console.log('Ada yang berubah nih dari state counter')
    }, [counter])

    return (
        <div className="flex flex-row justify-center items-center gap-2 mt-10">
            <span>{counter}</span>
            <button className="bg-gray-400 p-2 rounded-md text-white" onClick={() => setCounter((s) => s + 1)}>Increment</button>
        </div>
    )
}

export default Home

Bisa temen-temen lihat kode program diatas, ada 3 cara untuk mendefinisikan useEffect itu sendiri. Nah, perbedaanya ada pada Array of Dependencies

useEffect dengan array of dependencies kosong

useEffect(() => {
  console.log('Running usEffect dengan array kosong')
}, [])

Ketika temen-temen mendefinisikan useEffect dengan cara seperti ini maka semua kode program yang ada di dalam useEffect akan dijalankan hanya 1 kali ketika component itu dirender.

Hasil console useEffect dengan array of dependencies kosong:
Image description

useEffect dengan array of dependencies ada isinya

const [counter, setCounter] = useState<number>(0);

useEffect(() => {
  console.log('Running usEffect dengan array kosong')
}, [counter])

Ketika temen-temen mendefinisikan useEffect dengan cara seperti ini maka semua kode program yang ada di dalam useEffect akan dijalankan ketika component dirender dan dijalankan kembali apabila ada perubahan terhadap state yang dimasukkan ke dalam arraynya.

import React, { useEffect, useState } from 'react'

const Home = () => {
    const [counter, setCounter] = useState<number>(0);

    useEffect(() => {
        console.log('Ada yang berubah nih dari state counter')
    }, [counter])

    return (
        <div className="flex flex-row justify-center items-center gap-2 mt-10">
            <span>{counter}</span>
            <button 
                className="bg-gray-400 p-2 rounded-md text-white" 
                onClick={() => setCounter((s) => s + 1)}
            >Increment</button>
        </div>
    )
}

export default Home

Contohnya misal user itu menekan tombol Increment maka semua kode program yang ada di dalam useEffect itu akan dijalankan kembali, tetapi jika tidak ada perubahan state maka semua kode program yang ada di dalam useEffect tersebut tidak akan dijalankan.

Hasil console useEffect dengan array of dependencies ada isinya:
Image description

useEffect tanpa array of dependencies

const [counter, setCounter] = useState<number>(0);
const [time, setTime] = useState<number>(0);

useEffect(() => {
  console.log('Running usEffect tanpa Array')
})

Ketika temen-temen mendefinisikan useEffect dengan cara seperti ini maka semua kode program yang ada di dalam useEffect ini akan dijalankan apabila ada perubahan dari semua state.

import React, { useEffect, useState } from 'react'

const Home = () => {
    const [counter, setCounter] = useState<number>(0);
    const [time, setTime] = useState<number>(0);

    useEffect(() => {
        console.log(
          `Running usEffect tanpa Array 
          counter: ${counter} time: ${time}
         `)
    })

    return (
        <div className="flex flex-row justify-center items-center gap-2 mt-10">
            <span>{counter}</span>
            <span>{time}</span>
            <button 
              className="bg-gray-400 p-2 rounded-md text-white" 
              onClick={() => setCounter((s) => s + 1)}
            >Increment</button>
            <button 
              className="bg-gray-400 p-2 rounded-md text-white" 
              onClick={() => setTime((s) => s + 1)}
            >Time</button>
        </div>
    )
}

export default Home

Hasil console useEffect dengan array of dependencies kosong:
Image description

Bagaimana apakah penjelasan diatas mudah dipahami? kalau malah bikin temen-temen pusing maap ye bro wkwk. Kurang lebih seperti itu penjelasan yang bisa saya sampaikan tentang useEffect pada React/Next JS yang mana penjelasannya saya usahakan sesimple mungkin dengan analogi yang cukup sederhana juga. Sampai bertemu di lain artikel yang lebih menarik! Tengkyu brokk!

...

🔧 Bagaimana Cara Memahami useState Hooks pada React/Next JS?


📈 162.26 Punkte
🔧 Programmierung

🔧 Memahami CQRS (Command Query Responsibility Segregation) Kenapa dan Bagaimana Menggunakannya


📈 64.04 Punkte
🔧 Programmierung

🔧 React Hooks – How to Use the useState & useEffect Hooks in Your Project


📈 57.12 Punkte
🔧 Programmierung

🔧 React Hooks – How to Use the useState & useEffect Hooks in Your Project


📈 57.12 Punkte
🔧 Programmierung

🔧 Bagaimana cara memindahkan branch utama git dari master menjadi main


📈 56.7 Punkte
🔧 Programmierung

🔧 Meningkatkan User Experiece (UX) Aplikasi Menggunakan useOptimistic Hooks pada React JS/Next JS


📈 54.53 Punkte
🔧 Programmierung

🔧 Cara Memahami Penggunaan OOP (Object Oriented Programming) bagi Pemula


📈 53.29 Punkte
🔧 Programmierung

🔧 Cara dan Langkah-Langkah Instalasi OAuth Google pada LaraveL


📈 49.71 Punkte
🔧 Programmierung

🔧 useState() Hooks In react , How it Works ?


📈 42.45 Punkte
🔧 Programmierung

🔧 Mastering React Hooks: A Deep Dive into useState and useEffect (Part 1 of 3)


📈 42.45 Punkte
🔧 Programmierung

🔧 Hellfire Hooks: React's useState and useEffect Unleashed


📈 42.45 Punkte
🔧 Programmierung

🔧 How to Use React Hooks – useEffect, useState, and useContext Code Examples


📈 42.45 Punkte
🔧 Programmierung

🔧 Menggunakan Zustand Sebagai State Management pada React/Next JS.


📈 39.85 Punkte
🔧 Programmierung

🔧 scriptkavi/hooks: Customizable and Open Source React Hooks


📈 36.4 Punkte
🔧 Programmierung

🔧 Bloodline of Hooks: Custom Hooks in React for Advanced Devs


📈 36.4 Punkte
🔧 Programmierung

🔧 The Difference between the useState() and useRef() Hooks


📈 35.4 Punkte
🔧 Programmierung

🔧 What are useState, useEffect and useRef hooks?


📈 35.4 Punkte
🔧 Programmierung

🔧 This Week In React #185: React Conf, React Query, refs, Next.js after, mini-react...


📈 34.27 Punkte
🔧 Programmierung

🔧 This Week In React #185: React Conf, React Query, refs, Next.js after, mini-react...


📈 34.27 Punkte
🔧 Programmierung

🔧 Implementing User Authentication in Next.js with Next-Auth and React Hooks


📈 33.86 Punkte
🔧 Programmierung

🔧 Implementasi Lazy Loading pada Component Next JS yang Bisa Bikin Aplikasi Ngebut dengan Dynamic Import


📈 32.8 Punkte
🔧 Programmierung

🔧 Panduan Memahami Routing di Laravel


📈 30.32 Punkte
🔧 Programmierung

🔧 Memahami Struktur Folder Laravel bagi Pemula


📈 30.32 Punkte
🔧 Programmierung

🔧 Flutter Hooks Tutorial: Flutter Animation Using Hooks (useEffect and useAnimationController)


📈 29.35 Punkte
🔧 Programmierung

🔧 Unlocking React's Power: Understanding React's Core Hooks


📈 28.78 Punkte
🔧 Programmierung

🔧 Form Validation in React: An In-Depth Tutorial with Hooks and React Hook Form


📈 28.78 Punkte
🔧 Programmierung

🔧 Optimizing React Performance with Redux and React Hooks


📈 28.78 Punkte
🔧 Programmierung

🔧 Optimizing React Performance with Redux and React Hooks


📈 28.78 Punkte
🔧 Programmierung

🔧 Optimizing React Performance with Redux and React Hooks


📈 28.78 Punkte
🔧 Programmierung

🔧 Revolutionizing React: Unveiling the New Hooks in React 19🚀


📈 28.78 Punkte
🔧 Programmierung

🔧 🚀 Most Useful React Hooks for Your Next Project 🚀


📈 27.79 Punkte
🔧 Programmierung

🔧 Next Js just killed React hooks


📈 27.79 Punkte
🔧 Programmierung

🔧 💾 React Form Handling & Validation Best Practices: STOP Using `useState`


📈 27.77 Punkte
🔧 Programmierung

🔧 Creating a CRUD Application with React: Mastering useState and useEffect


📈 27.77 Punkte
🔧 Programmierung

matomo