diff --git a/src/content/learn/reacting-to-input-with-state.md b/src/content/learn/reacting-to-input-with-state.md index da559dc0f..097b59c56 100644 --- a/src/content/learn/reacting-to-input-with-state.md +++ b/src/content/learn/reacting-to-input-with-state.md @@ -1,37 +1,38 @@ --- -title: Reacting to Input with State +title: Merespon Masukan dengan State --- -React provides a declarative way to manipulate the UI. Instead of manipulating individual pieces of the UI directly, you describe the different states that your component can be in, and switch between them in response to the user input. This is similar to how designers think about the UI. +React menyediakan cara deklaratif untuk memanipulasi UI. Alih-alih memanipulasi bagian-bagian UI secara langsung, Anda deskripsikan berbagai *state* yang berbeda yang dapat terjadi di dalam komponen Anda, dan mengalihkan antara berbagai kemungkinan *state* tersebut sebagai respons terhadap masukan pengguna. Cara ini mirip dengan bagaimana desainer berpikir tentang UI. -* How declarative UI programming differs from imperative UI programming -* How to enumerate the different visual states your component can be in -* How to trigger the changes between the different visual states from code +* Bagaimana pemrograman UI deklaratif berbeda dari pemrograman UI imperatif +* Bagaimana cara melakukan enumerasi atas berbagai *state* visual yang berbeda dapat terjadi pada komponen Anda +* Bagaimana cara memicu perubahan antara berbagai *state* visual yang berbeda melalui kode -## How declarative UI compares to imperative {/*how-declarative-ui-compares-to-imperative*/} +## Membandingkan UI deklaratif dengan imperatif {/*how-declarative-ui-compares-to-imperative*/} -When you design UI interactions, you probably think about how the UI *changes* in response to user actions. Consider a form that lets the user submit an answer: +Ketika Anda mendesain interaksi UI, Anda mungkin berpikir tentang bagaimana UI *berubah* dalam menanggapi tindakan pengguna. Pertimbangkan sebuah formulir yang memungkinkan pengguna mengirimkan sebuah jawaban: -* When you type something into the form, the "Submit" button **becomes enabled.** -* When you press "Submit", both the form and the button **become disabled,** and a spinner **appears.** -* If the network request succeeds, the form **gets hidden,** and the "Thank you" message **appears.** -* If the network request fails, an error message **appears,** and the form **becomes enabled** again. +* Ketika Anda mengetikkan sesuatu kedalam formulir, maka tombol "Kirim" **menjadi aktif** +* Ketika Anda menekan tombol "Kirim", baik formulir maupun tombol "Kirim" tersebut **menjadi nonaktif** dan sebuah *spinner* **muncul.** +* Apabila permintaan jaringan berhasil, formulir **disembunyikan** dan pesan "Terima Kasih" **muncul.** +* Apabila permintaan jaringan gagal, sebuah pesan kesalahan **muncul,** dan formulir **menjadi aktif** kembali. -In **imperative programming,** the above corresponds directly to how you implement interaction. You have to write the exact instructions to manipulate the UI depending on what just happened. Here's another way to think about this: imagine riding next to someone in a car and telling them turn by turn where to go. - +Pada **pemrograman imperatif**, yang disebutkan di atas berkaitan langsung dengan bagaimana Anda mengimplementasikan interaksi tersebut. Anda harus menulis intruksi yang spesifik untuk memanipulasi UI tergantung apa yang sedang terjadi. Cara lain untuk memikirkan hal ini adalah: bayangkan menumpang disebelah seseorang di dalam mobil dan memberitahu mereka kemana harus pergi disetiap belokan. -They don't know where you want to go, they just follow your commands. (And if you get the directions wrong, you end up in the wrong place!) It's called *imperative* because you have to "command" each element, from the spinner to the button, telling the computer *how* to update the UI. + -In this example of imperative UI programming, the form is built *without* React. It only uses the browser [DOM](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model): +Dia tidak tahu kemana Anda ingin pergi, dia hanya mengikuti perintah yang Anda berikan (dan apabila Anda memberikan arah yang salah, Anda akan sampai ditempat yang salah juga). Hal ini disebut *imperatif* karena Anda harus " memberi perintah" pada setiap elemen, dari pemintal hingga tombol, memberi tahu komputer *bagaimana cara* untuk memperbarui UI tersebut. + +Pada contoh pemrograman antarmuka imperatif, formulir dibangun tanpa menggunakan React, hanya menggunakan [DOM](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model) peramban: @@ -81,13 +82,13 @@ function disable(el) { } function submitForm(answer) { - // Pretend it's hitting the network. + // Anggap saja sedang menghubungi jaringan. return new Promise((resolve, reject) => { setTimeout(() => { if (answer.toLowerCase() === 'istanbul') { resolve(); } else { - reject(new Error('Good guess but a wrong answer. Try again!')); + reject(new Error('Tebakan yang bagus, tapi salah. Coba lagi!')); } }, 1500); }); @@ -111,17 +112,17 @@ textarea.oninput = handleTextareaChange; ```html public/index.html
-

City quiz

+

Kuis kota

- What city is located on two continents? + Kota apa yang terletak di dua benua?


- - + +
-

That's right!

+

Benar sekali!