0% menganggap dokumen ini bermanfaat (0 suara)
14 tayangan

Event React JS

Dokumen tersebut membahas tentang penggunaan event pada React JS. React menggunakan event yang sama dengan HTML seperti klik, ubah, dan arahkan mouse. Event handler ditulis menggunakan camelCase seperti onClick dan bukan onclick. Event handler dapat menerima parameter dan objek event secara otomatis.

Diunggah oleh

hardiandhella
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
14 tayangan

Event React JS

Dokumen tersebut membahas tentang penggunaan event pada React JS. React menggunakan event yang sama dengan HTML seperti klik, ubah, dan arahkan mouse. Event handler ditulis menggunakan camelCase seperti onClick dan bukan onclick. Event handler dapat menerima parameter dan objek event secara otomatis.

Diunggah oleh

hardiandhella
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 6

Event React JS

February 26, 2020 admin ReactJS

Sama seperti HTML, React dapat melakukan tindakan berdasarkan peristiwa pengguna.

React memiliki event yang sama dengan HTML: klik, ubah, arahkan mouse, dll.

Menambahkan Event

Event React ditulis dalam sintaks camelCase:

onClick bukannya onclick.

Penangan event yang sebenarnya ditulis di dalam kurung kurawal:

onClick={shoot}  bukannya onClick="shoot()".

React:

1<button onClick={shoot}>Take the Shot!</button>

HTML:

1<button onclick="shoot()">Take the Shot!</button>

Handler Event

Praktik yang baik adalah menempatkan handler event sebagai metode di kelas komponen:

Contoh:

Masukkan fungsi shoot di dalam komponen Football:

1
2
3 class Football extends React.Component {
4   shoot() {
5     alert("Great Shot!");
6   }
  render() {
7     return (
8       <button onClick={this.shoot}>Take the shot!</button>
9     );
1   }
0 }
1  
ReactDOM.render(<Football />, document.getElementById('root'));
1
1
2
Bind this

Untuk metode dalam React, kata kunci this harus mewakili komponen yang memiliki
metode.

Itu sebabnya kamu harus menggunakan fungsi panah. Dengan fungsi panah, this akan
selalu mewakili objek yang mendefinisikan fungsi panah.

Contoh:

1
2
3
4
5 class Football extends React.Component {
6   shoot = () => {
7     alert(this);
    /*
8     The 'this' keyword refers to the component object
9     */
1   }
0   render() {
    return (
1
      <button onClick={this.shoot}>Take the shot!</button>
1     );
1   }
2 }
1  
3 ReactDOM.render(<Football />, document.getElementById('root'));
1
4
1
5

Mengapa Fungsi Arrow?

Dalam komponen kelas, kata kunci this tidak didefinisikan secara default, jadi dengan
fungsi reguler kata kunci this mewakili objek yang disebut metode, yang dapat berupa
objek jendela global, tombol HTML, atau apa pun.

Jika kamu harus menggunakan fungsi biasa alih-alih fungsi panah, kamu harus


mengikat this ke komponen instance menggunakan metode bind():

Contoh:

Jadikan this ada di fungsi shoot dengan mengikatnya di fungsi constructor:

1 class Football extends React.Component {


  constructor(props) {
2
    super(props)
3     this.shoot = this.shoot.bind(this)
4   }
5   shoot() {
6
7
8
9
1
0
1
1     alert(this);
1     /*
    Thanks to the binding in the constructor function,
2     the 'this' keyword now refers to the component object
1     */
3   }
1   render() {
4     return (
      <button onClick={this.shoot}>Take the shot!</button>
1     );
5   }
1 }
6  
1 ReactDOM.render(<Football />, document.getElementById('root'));
7
1
8
1
9
2
0

Tanpa ikatan, kata kunci this akan kembali  undefined.

Melewati Argumen

Jika kamu ingin mengirim parameter ke event handler, kamu memiliki dua opsi:

1. Buat fungsi panah anonim:

Contoh:

Mengirim “Goal” sebagai parameter ke fungsi shoot , menggunakan fungsi panah:

1 class Football extends React.Component {


  shoot = (a) => {
2
    alert(a);
3   }
4   render() {
5     return (
6       <button onClick={() => this.shoot("Goal")}>Take the shot!</button>
    );
7   }
8 }
9  
1 ReactDOM.render(<Football />, document.getElementById('root'));
0
1
1
1
2

Atau:

2. Ikat event handler ke this.

Perhatikan bahwa argumen pertama harus this.

Contoh:

Kirim “Goal” sebagai parameter ke fungsi shoot :

1
2
3 class Football extends React.Component {
4   shoot(a) {
    alert(a);
5   }
6   render() {
7     return (
8       <button onClick={this.shoot.bind(this, "Goal")}>Take the shot!
</button>
9
    );
1   }
0 }
1  
1 ReactDOM.render(<Football />, document.getElementById('root'));
1
2

Catatan pada contoh kedua: Jika kamu mengirim argumen tanpa menggunakan  metode
bind, (  this.shoot(this, "Goal")bukan  this.shoot.bind(this, "Goal")), fungsi
shoot akan dieksekusi ketika halaman dimuat alih-alih menunggu tombol diklik.

React Event Object

Event handler memiliki akses ke React Event yang memicu fungsi.

Dalam contoh kami acara adalah acara “klik”. Perhatikan bahwa sekali lagi sintaksnya
berbeda ketika menggunakan fungsi arrow atau tidak.

Dengan fungsi arrow kamu harus mengirim argumen acara secara manual:

Contoh:

Fungsi arrow: Mengirim objek acara secara manual:

1 class Football extends React.Component {


2   shoot = (a, b) => {
3
4
5
6
7     alert(b.type);
8     /*
9     'b' represents the React event that triggered the function,
    in this case the 'click' event
1     */
0   }
1   render() {
1     return (
      <button onClick={(ev) => this.shoot("Goal", ev)}>Take the shot!
1
</button>
2     );
1   }
3 }
1  
4 ReactDOM.render(<Football />, document.getElementById('root'));
1
5
1
6

Tanpa fungsi panah, objek Bereaksi acara dikirim secara otomatis sebagai argumen terakhir
saat menggunakan metode bind():

Contoh:

Dengan metode bind() ini, objek acara dikirim sebagai argumen terakhir:

1 class Football extends React.Component {


  shoot = (a, b) => {
2
    alert(b.type);
3     /*
4     'b' represents the React event that triggered the function,
5     in this case the 'click' event
6     */
  }
7   render() {
8     return (
9       <button onClick={this.shoot.bind(this, "Goal")}>Take the shot!
1 </button>
0     );
  }
1 }
1  
1 ReactDOM.render(<Football />, document.getElementById('root'));
2
1
3
1
4
1
5
1
6

Anda mungkin juga menyukai