From 6d30f43d45ac9110d2f2a246b3e2a53f5f815d8a Mon Sep 17 00:00:00 2001 From: titusefferian Date: Mon, 11 Feb 2019 19:07:01 +0700 Subject: [PATCH 01/14] translation handling events --- content/docs/handling-events.md | 53 +++++++++++++++++---------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index a8d3a1f51..55ba77206 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -1,6 +1,6 @@ --- id: handling-events -title: Handling Events +title: Penanganan Events permalink: docs/handling-events.html prev: state-and-lifecycle.html next: conditional-rendering.html @@ -8,12 +8,12 @@ redirect_from: - "docs/events-ko-KR.html" --- -Handling events with React elements is very similar to handling events on DOM elements. There are some syntactic differences: +Menangani sebuah *events* dengan elemen React sangat mirip seperti menangani sebuah *events* pada elemen DOM. Ada beberapa perbedaan sintaks: -* React events are named using camelCase, rather than lowercase. -* With JSX you pass a function as the event handler, rather than a string. +* *Events* pada React biasanya dituliskan dalam bentuk camelCase, dan bukan lowercase. +* Dengan JSX Anda dapat oper sebuah *function* sebagai *event handler*, dan bukan sebuah *string*. -For example, the HTML: +Sebagai contoh pada HTML: ```html ``` -is slightly different in React: +sedikit berbeda pada React: ```js{1} ``` -Another difference is that you cannot return `false` to prevent default behavior in React. You must call `preventDefault` explicitly. For example, with plain HTML, to prevent the default link behavior of opening a new page, you can write: +Perbedaan lainnya adalah Anda tidak dapat mengembalikan nilai `false` untuk mencegah *behavior* bawaan pada React. Anda harus memanggil `preventDefault` secara eksplisit. Seperti contoh, pada HTML untuk mencegah *link behavior* bawaan membuka halaman baru, Anda dapat menulis seperti ini: ```html @@ -37,7 +37,7 @@ Another difference is that you cannot return `false` to prevent default behavior ``` -In React, this could instead be: +Di React, dapat dilakukan seperti ini: ```js{2-5,8} function ActionLink() { @@ -54,11 +54,11 @@ function ActionLink() { } ``` -Here, `e` is a synthetic event. React defines these synthetic events according to the [W3C spec](https://www.w3.org/TR/DOM-Level-3-Events/), so you don't need to worry about cross-browser compatibility. See the [`SyntheticEvent`](/docs/events.html) reference guide to learn more. +Disini, `e` adalah sebuah event tiruan. React mendefinisikan event tiruan ini berdasarkan [W3C spec](https://www.w3.org/TR/DOM-Level-3-Events/), jadi Anda tidak perlu kuatir akan kesesuaian antar lintar browser. Lihat referensi pada [`SyntheticEvent`](/docs/events.html) untuk paduan belajar lebih jauh. -When using React you should generally not need to call `addEventListener` to add listeners to a DOM element after it is created. Instead, just provide a listener when the element is initially rendered. +Ketika menggunakan React, pada umumnya Anda tidak perlu memanggil `addEventListener` untuk menambahkan *listener* pada elemen DOM setelah dibuat. Sebagai gantinya, cukup berikan *listener* ketika elemen pertama kali di-*render*. -When you define a component using an [ES6 class](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes), a common pattern is for an event handler to be a method on the class. For example, this `Toggle` component renders a button that lets the user toggle between "ON" and "OFF" states: +Ketika Anda mendefinisikan sebuah komponen dengan menggunakan [ES6 class](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes), pada umumnya penanganan *event* sebagai sebuah *method* dalam *class*. Sebagai contoh, komponen `Toggle` ini me-*render* sebuah tombol yang memungkinkan pengguna untuk mengubah kondisi "ON" dan "OFF" pada sebuah *state*: ```js{6,7,10-14,18} class Toggle extends React.Component { @@ -66,7 +66,8 @@ class Toggle extends React.Component { super(props); this.state = {isToggleOn: true}; - // This binding is necessary to make `this` work in the callback + // cara binding seperti ini diperlukan untuk membuat `this` dapat berfungsi - + // pada callback binding this.handleClick = this.handleClick.bind(this); } @@ -91,18 +92,18 @@ ReactDOM.render( ); ``` -[**Try it on CodePen**](http://codepen.io/gaearon/pen/xEmzGg?editors=0010) +[**Coba di CodePen**](http://codepen.io/gaearon/pen/xEmzGg?editors=0010) -You have to be careful about the meaning of `this` in JSX callbacks. In JavaScript, class methods are not [bound](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind) by default. If you forget to bind `this.handleClick` and pass it to `onClick`, `this` will be `undefined` when the function is actually called. +Anda harus berhati-hati terhadap makna dari `this` pada JSX *callbacks*. Dalam JavaScript, *class method* tidak [terikat](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind) secara bawaan. Jika Anda lupa untuk melakukan *binding* `this.handleClick` dan mengoperkan pada `onClick`, maka `this` akan menjadi `undefined` ketika sebuah *function* telah dipanggil. -This is not React-specific behavior; it is a part of [how functions work in JavaScript](https://www.smashingmagazine.com/2014/01/understanding-javascript-function-prototype-bind/). Generally, if you refer to a method without `()` after it, such as `onClick={this.handleClick}`, you should bind that method. +Ini bukan *behavior* pada React secara spesifik, ini merupakan bagian dari [bagaimana sebuah *functions* itu bekerja pada JavaScript](https://www.smashingmagazine.com/2014/01/understanding-javascript-function-prototype-bind/). Pada umumnya jika Anda mereferensi sebuah *method* tanpa `()`, seperti `onClick={this.handleClick}`, maka Anda harus melakukan *binding* terhadap *method* tersebut. -If calling `bind` annoys you, there are two ways you can get around this. If you are using the experimental [public class fields syntax](https://babeljs.io/docs/plugins/transform-class-properties/), you can use class fields to correctly bind callbacks: +Jika memanggil `bind` menggangu Anda, ada dua cara untuk mengatasi ini. Jika Anda menggunakan sintaks eksperimental [public class fields](https://babeljs.io/docs/plugins/transform-class-properties/), Anda dapat menggunakan *class fields* untuk melakukan *binding* terhadap *callbacks*: ```js{2-6} class LoggingButton extends React.Component { - // This syntax ensures `this` is bound within handleClick. - // Warning: this is *experimental* syntax. + // Sintaks ini memastikan `this` telah terikat dalam handleClick. + // Peringatan: Ini adalah *eksperimental* sintaks. handleClick = () => { console.log('this is:', this); } @@ -117,9 +118,9 @@ class LoggingButton extends React.Component { } ``` -This syntax is enabled by default in [Create React App](https://github.com/facebookincubator/create-react-app). +sintaks ini telah diakfifkan secara bawaan pada [Create React App](https://github.com/facebookincubator/create-react-app). -If you aren't using class fields syntax, you can use an [arrow function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions) in the callback: +Jika Anda tidak menggunakan sintaks *class fields*, Anda dapat menggunakan [arrow function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions) pada *callback*: ```js{7-9} class LoggingButton extends React.Component { @@ -128,7 +129,7 @@ class LoggingButton extends React.Component { } render() { - // This syntax ensures `this` is bound within handleClick + // Sintaks ini memastikan `this` telah terikat dalam handleClick. return ( ``` -The above two lines are equivalent, and use [arrow functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions) and [`Function.prototype.bind`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind) respectively. +Dua baris di atas memiliki arti yang sama, masing-masing menggunakan [arrow functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions) dan [`Function.prototype.bind`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind). -In both cases, the `e` argument representing the React event will be passed as a second argument after the ID. With an arrow function, we have to pass it explicitly, but with `bind` any further arguments are automatically forwarded. +Dalam kedua kasus tersebut, argumen `e` merepresentasikan *event* React yang akan dioper sebagai argumen kedua setelah ID. Dengan *arrow function*, kita harus mengeoperkan secara eksplisit, namun dengan `bind` segala argumen setelahnya akan diteruskan secara otomatis. From db2cb9d7ba6061b015bd8ecf808be0da0f26ae19 Mon Sep 17 00:00:00 2001 From: titusefferian Date: Mon, 11 Feb 2019 19:12:48 +0700 Subject: [PATCH 02/14] capitalize typo --- content/docs/handling-events.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index 55ba77206..ff6e69388 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -141,7 +141,7 @@ class LoggingButton extends React.Component { Masalah pada sintaks tersebut adalah callback yang berbeda dibuat setiap kali `LoggingButton` di-*render*. Dalam banyak kasus, hal ini tidak masalah. Akan tetapi, jika callback tersebut mengoperkan sebagai props kepada komponen yang lebih rendah, maka komponen tersebut mungkin akan melakukan ekstra *render* ulang. Kita umumnya merekomendasikan *binding* dilakukan pada *constructor* atau menggunakan sintaks *class fields*, untuk menghindari masalah kinerja seperti ini. -## Mengoper Argumen kedalam Penanganan Event {#passing-arguments-to-event-handlers} +## Mengoper Argumen Kedalam Penanganan Event {#passing-arguments-to-event-handlers} Di dalam perulangan biasanya ingin mengoper sebuah parameter ekstra kedalam penanganan *event*. Sebagai contoh, jika `id` sama dengan baris ID, maka salah satu dari kedua dapat dijalankan. From 54040e2591495ae8913a02c3f2e99e258bc31d44 Mon Sep 17 00:00:00 2001 From: titusefferian Date: Mon, 11 Feb 2019 19:25:18 +0700 Subject: [PATCH 03/14] fix typo --- content/docs/handling-events.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index ff6e69388..f28884878 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -143,7 +143,7 @@ Masalah pada sintaks tersebut adalah callback yang berbeda dibuat setiap kali `L ## Mengoper Argumen Kedalam Penanganan Event {#passing-arguments-to-event-handlers} -Di dalam perulangan biasanya ingin mengoper sebuah parameter ekstra kedalam penanganan *event*. Sebagai contoh, jika `id` sama dengan baris ID, maka salah satu dari kedua dapat dijalankan. +Di dalam perulangan biasanya ingin mengoper sebuah parameter ekstra kedalam penanganan *event*. Sebagai contoh, jika `id` sama dengan baris ID, maka salah satu dari kedua dapat dijalankan: ```js From 616541d61c3927fb6e769ca2cd554aed94f25403 Mon Sep 17 00:00:00 2001 From: titusefferian Date: Sat, 16 Feb 2019 10:42:14 +0700 Subject: [PATCH 04/14] regalius request change done --- content/docs/handling-events.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index f28884878..c075da067 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -17,7 +17,7 @@ Sebagai contoh pada HTML: ```html ``` @@ -25,7 +25,7 @@ sedikit berbeda pada React: ```js{1} ``` @@ -43,12 +43,12 @@ Di React, dapat dilakukan seperti ini: function ActionLink() { function handleClick(e) { e.preventDefault(); - console.log('The link was clicked.'); + console.log('Tautan diklik.'); } return ( - Click me + Klik Saya ); } @@ -111,14 +111,14 @@ class LoggingButton extends React.Component { render() { return ( ); } } ``` -sintaks ini telah diakfifkan secara bawaan pada [Create React App](https://github.com/facebookincubator/create-react-app). +Sintaks ini telah diakfifkan secara bawaan pada [Create React App](https://github.com/facebookincubator/create-react-app). Jika Anda tidak menggunakan sintaks *class fields*, Anda dapat menggunakan [arrow function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions) pada *callback*: @@ -132,14 +132,14 @@ class LoggingButton extends React.Component { // Sintaks ini memastikan `this` telah terikat dalam handleClick. return ( ); } } ``` -Masalah pada sintaks tersebut adalah callback yang berbeda dibuat setiap kali `LoggingButton` di-*render*. Dalam banyak kasus, hal ini tidak masalah. Akan tetapi, jika callback tersebut mengoperkan sebagai props kepada komponen yang lebih rendah, maka komponen tersebut mungkin akan melakukan ekstra *render* ulang. Kita umumnya merekomendasikan *binding* dilakukan pada *constructor* atau menggunakan sintaks *class fields*, untuk menghindari masalah kinerja seperti ini. +Masalah pada sintaks tersebut adalah *callback* yang berbeda dibuat setiap kali `LoggingButton` di-*render*. Dalam banyak kasus, hal ini tidak masalah. Akan tetapi, jika callback tersebut mengoperkan sebagai *props* kepada komponen yang lebih rendah, maka komponen tersebut mungkin akan melakukan ekstra *render* ulang. Kita umumnya merekomendasikan *binding* dilakukan pada *constructor* atau menggunakan sintaks *class fields*, untuk menghindari masalah kinerja seperti ini. ## Mengoper Argumen Kedalam Penanganan Event {#passing-arguments-to-event-handlers} From 4f838cf49694bf2684410884e53beddbdcaad6e6 Mon Sep 17 00:00:00 2001 From: Rizky Date: Sat, 16 Feb 2019 10:44:00 +0700 Subject: [PATCH 05/14] Update content/docs/handling-events.md Co-Authored-By: TitusEfferian --- content/docs/handling-events.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index c075da067..9f7d9dc79 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -11,7 +11,7 @@ redirect_from: Menangani sebuah *events* dengan elemen React sangat mirip seperti menangani sebuah *events* pada elemen DOM. Ada beberapa perbedaan sintaks: * *Events* pada React biasanya dituliskan dalam bentuk camelCase, dan bukan lowercase. -* Dengan JSX Anda dapat oper sebuah *function* sebagai *event handler*, dan bukan sebuah *string*. +* Dengan JSX Anda dapat mengoper *function* sebagai *event handler*, bukan sebagai *string*. Sebagai contoh pada HTML: From 365e9e5d9120a5db2d487e016096611128657bfc Mon Sep 17 00:00:00 2001 From: Rizky Date: Sat, 16 Feb 2019 10:47:08 +0700 Subject: [PATCH 06/14] Update content/docs/handling-events.md Co-Authored-By: TitusEfferian --- content/docs/handling-events.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index 9f7d9dc79..b358f0084 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -96,7 +96,7 @@ ReactDOM.render( Anda harus berhati-hati terhadap makna dari `this` pada JSX *callbacks*. Dalam JavaScript, *class method* tidak [terikat](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind) secara bawaan. Jika Anda lupa untuk melakukan *binding* `this.handleClick` dan mengoperkan pada `onClick`, maka `this` akan menjadi `undefined` ketika sebuah *function* telah dipanggil. -Ini bukan *behavior* pada React secara spesifik, ini merupakan bagian dari [bagaimana sebuah *functions* itu bekerja pada JavaScript](https://www.smashingmagazine.com/2014/01/understanding-javascript-function-prototype-bind/). Pada umumnya jika Anda mereferensi sebuah *method* tanpa `()`, seperti `onClick={this.handleClick}`, maka Anda harus melakukan *binding* terhadap *method* tersebut. +Ini bukan *behavior* yang spesifik pada React, tetapi ini merupakan bagian dari [bagaimana *functions* dalam JavaScript bekerja](https://www.smashingmagazine.com/2014/01/understanding-javascript-function-prototype-bind/). Pada umumnya jika Anda mendefinisikan sebuah *method* tanpa diakhiri dengan `()`, seperti `onClick={this.handleClick}`, maka Anda harus melakukan *binding* terhadap *method* tersebut. Jika memanggil `bind` menggangu Anda, ada dua cara untuk mengatasi ini. Jika Anda menggunakan sintaks eksperimental [public class fields](https://babeljs.io/docs/plugins/transform-class-properties/), Anda dapat menggunakan *class fields* untuk melakukan *binding* terhadap *callbacks*: From 6c288bb8fb5e48284ecf7721b65260e59b3587e0 Mon Sep 17 00:00:00 2001 From: Rizky Date: Sat, 16 Feb 2019 10:47:32 +0700 Subject: [PATCH 07/14] Update content/docs/handling-events.md Co-Authored-By: TitusEfferian --- content/docs/handling-events.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index b358f0084..e09ca34e9 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -13,7 +13,7 @@ Menangani sebuah *events* dengan elemen React sangat mirip seperti menangani seb * *Events* pada React biasanya dituliskan dalam bentuk camelCase, dan bukan lowercase. * Dengan JSX Anda dapat mengoper *function* sebagai *event handler*, bukan sebagai *string*. -Sebagai contoh pada HTML: +Sebagai contoh pada HTML berikut ini: ```html ``` -sedikit berbeda pada React: +sedikit berbeda dengan React: ```js{1} ``` -Perbedaan lainnya adalah Anda tidak dapat mengembalikan nilai `false` untuk mencegah *behavior* bawaan pada React. Anda harus memanggil `preventDefault` secara eksplisit. Seperti contoh, pada HTML untuk mencegah *link behavior* bawaan membuka halaman baru, Anda dapat menulis seperti ini: +Perbedaan lainnya adalah Anda tidak dapat mengembalikan nilai `false` untuk mencegah *behavior* bawaan React. Anda harus memanggil `preventDefault` secara eksplisit. Sebagai contoh, pada HTML untuk mencegah agar *link* bawaan membuka halaman baru, Anda dapat menulis seperti ini: ```html From 9e2c88c6aca126c0a2b8ccd5be211e2c6700b8d9 Mon Sep 17 00:00:00 2001 From: Rizky Date: Sat, 16 Feb 2019 10:50:05 +0700 Subject: [PATCH 11/14] Update content/docs/handling-events.md Co-Authored-By: TitusEfferian --- content/docs/handling-events.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index e4fe121f4..f4081ba5b 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -37,7 +37,7 @@ Perbedaan lainnya adalah Anda tidak dapat mengembalikan nilai `false` untuk menc ``` -Di React, dapat dilakukan seperti ini: +Sedangkan pada React, contoh tersebut dapat ditulis sebagai berikut: ```js{2-5,8} function ActionLink() { From 1e63b8d6d3ac0ae204d4fbb54316a3e194856ba8 Mon Sep 17 00:00:00 2001 From: Rizky Date: Sat, 16 Feb 2019 10:50:36 +0700 Subject: [PATCH 12/14] Update content/docs/handling-events.md Co-Authored-By: TitusEfferian --- content/docs/handling-events.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index f4081ba5b..79f82e6b7 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -98,7 +98,7 @@ Anda harus berhati-hati terhadap makna dari `this` pada JSX *callbacks*. Dalam J Ini bukan *behavior* yang spesifik pada React, tetapi ini merupakan bagian dari [bagaimana *functions* dalam JavaScript bekerja](https://www.smashingmagazine.com/2014/01/understanding-javascript-function-prototype-bind/). Pada umumnya jika Anda mendefinisikan sebuah *method* tanpa diakhiri dengan `()`, seperti `onClick={this.handleClick}`, maka Anda harus melakukan *binding* terhadap *method* tersebut. -Jika memanggil `bind` menggangu Anda, ada dua cara untuk mengatasi ini. Jika Anda menggunakan sintaks eksperimental [public class fields](https://babeljs.io/docs/plugins/transform-class-properties/), Anda dapat menggunakan *class fields* untuk melakukan *binding* terhadap *callbacks*: +Jika Anda tidak terbiasa menggunakan `bind`, ada dua cara untuk mengatasi ini. Jika Anda menggunakan sintaks eksperimental [public class fields](https://babeljs.io/docs/plugins/transform-class-properties/), Anda dapat menggunakan *class fields* untuk melakukan *binding* terhadap *callbacks*: ```js{2-6} class LoggingButton extends React.Component { From 499ce58b61b66a5bddbbb5f1330af503910cbb28 Mon Sep 17 00:00:00 2001 From: titusefferian Date: Sat, 16 Feb 2019 10:50:58 +0700 Subject: [PATCH 13/14] change oper to mengoper --- content/docs/handling-events.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index c075da067..35195d0f3 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -8,10 +8,10 @@ redirect_from: - "docs/events-ko-KR.html" --- -Menangani sebuah *events* dengan elemen React sangat mirip seperti menangani sebuah *events* pada elemen DOM. Ada beberapa perbedaan sintaks: +Menangani *events* dengan elemen React sangat mirip seperti menangani sebuah *events* pada elemen DOM. Ada beberapa perbedaan sintaks: * *Events* pada React biasanya dituliskan dalam bentuk camelCase, dan bukan lowercase. -* Dengan JSX Anda dapat oper sebuah *function* sebagai *event handler*, dan bukan sebuah *string*. +* Dengan JSX Anda dapat mengoper sebuah *function* sebagai *event handler*, dan bukan sebuah *string*. Sebagai contoh pada HTML: From 092d885b4dc32c4447ac14f37eebbdedfdae1db4 Mon Sep 17 00:00:00 2001 From: titusefferian Date: Tue, 19 Feb 2019 00:01:30 +0700 Subject: [PATCH 14/14] request change arfianadam --- content/docs/handling-events.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index c02d026a6..7741cb629 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -8,7 +8,7 @@ redirect_from: - "docs/events-ko-KR.html" --- -Menangani *events* dengan elemen React sangat mirip seperti menangani sebuah *events* pada elemen DOM. Ada beberapa perbedaan sintaks: +Menangani *events* dengan elemen React sangat mirip seperti menangani sebuah *events* pada elemen DOM. Ada beberapa perbedaan sintaksis: * *Events* pada React biasanya ditulis dalam bentuk *camelCase*, bukan *lowercase*. * Dengan JSX Anda dapat mengoper *function* sebagai *event handler*, bukan sebagai *string*. @@ -54,7 +54,7 @@ function ActionLink() { } ``` -Disini, `e` adalah sebuah event tiruan. React mendefinisikan event tiruan ini berdasarkan [W3C spec](https://www.w3.org/TR/DOM-Level-3-Events/), jadi Anda tidak perlu kuatir akan kesesuaian antar lintar browser. Lihat referensi pada [`SyntheticEvent`](/docs/events.html) untuk paduan belajar lebih jauh. +Di sini, `e` adalah sebuah *event* tiruan. React mendefinisikan event tiruan ini berdasarkan [W3C spec](https://www.w3.org/TR/DOM-Level-3-Events/), jadi Anda tidak perlu khawatir akan kesesuaian antar lintas *browser*. Lihat referensi pada [`SyntheticEvent`](/docs/events.html) untuk panduan belajar lebih jauh. Ketika menggunakan React, pada umumnya Anda tidak perlu memanggil `addEventListener` untuk menambahkan *listener* pada elemen DOM setelah dibuat. Sebagai gantinya, cukup berikan *listener* ketika elemen pertama kali di-*render*. @@ -98,12 +98,12 @@ Anda harus berhati-hati terhadap makna dari `this` pada JSX *callbacks*. Dalam J Ini bukan *behavior* yang spesifik pada React, tetapi ini merupakan bagian dari [bagaimana *functions* dalam JavaScript bekerja](https://www.smashingmagazine.com/2014/01/understanding-javascript-function-prototype-bind/). Pada umumnya jika Anda mendefinisikan sebuah *method* tanpa diakhiri dengan `()`, seperti `onClick={this.handleClick}`, maka Anda harus melakukan *binding* terhadap *method* tersebut. -Jika Anda tidak terbiasa menggunakan `bind`, ada dua cara untuk mengatasi ini. Jika Anda menggunakan sintaks eksperimental [public class fields](https://babeljs.io/docs/plugins/transform-class-properties/), Anda dapat menggunakan *class fields* untuk melakukan *binding* terhadap *callbacks*: +Jika Anda tidak terbiasa menggunakan `bind`, ada dua cara untuk mengatasi ini. Jika Anda menggunakan sintaksis eksperimental [public class fields](https://babeljs.io/docs/plugins/transform-class-properties/), Anda dapat menggunakan *class fields* untuk melakukan *binding* terhadap *callbacks*: ```js{2-6} class LoggingButton extends React.Component { - // Sintaks ini memastikan `this` telah terikat dalam handleClick. - // Peringatan: Ini adalah *eksperimental* sintaks. + // Sintaksis ini memastikan `this` telah terikat dalam handleClick. + // Peringatan: Ini adalah eksperimental sintaksis. handleClick = () => { console.log('this is:', this); } @@ -118,9 +118,9 @@ class LoggingButton extends React.Component { } ``` -Sintaks ini telah diakfifkan secara bawaan pada [Create React App](https://github.com/facebookincubator/create-react-app). +Sintaksis ini telah diakfifkan secara bawaan pada [Create React App](https://github.com/facebookincubator/create-react-app). -Jika Anda tidak menggunakan sintaks *class fields*, Anda dapat menggunakan [arrow function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions) pada *callback*: +Jika Anda tidak menggunakan sintaksis *class fields*, Anda dapat menggunakan [arrow function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions) pada *callback*: ```js{7-9} class LoggingButton extends React.Component { @@ -129,7 +129,7 @@ class LoggingButton extends React.Component { } render() { - // Sintaks ini memastikan `this` telah terikat dalam handleClick. + // Sintaksis ini memastikan `this` telah terikat dalam handleClick. return (