Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Menyalurkan Nilai kepada Peristiwa onClick dalam React?

Bagaimana untuk Menyalurkan Nilai kepada Peristiwa onClick dalam React?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-29 00:48:10454semak imbas

How to Pass Values to onClick Events in React?

Melalukan Nilai kepada Peristiwa onClick dalam React

Pengendali acara onClick React tidak menerima parameter secara asli. Apabila onClick dicetuskan, ia memaparkan sifat peristiwa sintetik tanpa sebarang pemindahan nilai eksplisit. Untuk mengatasinya, beberapa pendekatan boleh digunakan:

Fungsi Anak Panah (Cara Mudah)

Fungsi anak panah boleh digunakan untuk menghantar nilai secara manual kepada pengendali onClick:

return (
  <th value={column} onClick={() => this.handleSort(column)}>{column}</th>
);

Ini mencipta fungsi baharu yang memanggil handleSort dengan parameter yang dikehendaki. Walau bagaimanapun, penciptaan fungsi yang berlebihan boleh menyebabkan pemaparan semula yang tidak perlu.

Sub-Komponen (Kaedah Optimum)

Mengekstrak pengendali menjadi subkomponen meningkatkan prestasi dengan menghalang berlebihan pemaparan semula:

Subkomponen

class TableHeader extends Component {
  handleClick = () => {
    this.props.onHeaderClick(this.props.value);
  }

  render() {
    return (
      <th onClick={this.handleClick}>
        {this.props.column}
      </th>
    );
  }
}

Komponen Utama

{this.props.defaultColumns.map((column) => (
  <TableHeader
    value={column}
    onHeaderClick={this.handleSort}
  />
))}

Legasi ES5 Pendekatan (Cara Mudah)

Untuk ES5 keserasian, pendekatan berikut boleh melepasi nilai menggunakan .bind:

return (
  <th value={column} onClick={this.handleSort.bind(this, column)}>{column}</th>
);

Dengan memilih teknik yang paling sesuai, anda boleh menghantar nilai secara berkesan kepada peristiwa onClick dalam React dan mengelakkan isu yang digariskan dalam soalan.

Atas ialah kandungan terperinci Bagaimana untuk Menyalurkan Nilai kepada Peristiwa onClick dalam React?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn