Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Mengikat `ini` dengan Betul dalam Pengendali Acara React untuk Mengelakkan Ralat Konteks?

Bagaimanakah Saya Boleh Mengikat `ini` dengan Betul dalam Pengendali Acara React untuk Mengelakkan Ralat Konteks?

DDD
Lepaskan: 2024-12-13 12:04:57
asal
335 orang telah melayarinya

How Can I Properly Bind `this` in React Event Handlers to Avoid Context Errors?

Memahami Kekaburan ini dalam Pengendali Acara React

Dalam React, pengendali acara yang mengikat kepada kejadian komponen memastikan mereka mempunyai akses kepada konteks ini. Walau bagaimanapun, pembangun mungkin menghadapi ralat semasa cuba mengakses this.setState atau this.refs dalam fungsi pengendali acara. Isu ini berpunca daripada kekaburan di sekeliling ini apabila terikat secara tersirat pada tika komponen.

Untuk menangani perkara ini, fungsi pengendali peristiwa mengikat kepada tika komponen sebelum menghantarnya sebagai prop. Ini memastikan pembolehubah ini dalam badan fungsi merujuk kepada contoh komponen dan bukan kepada objek tetingkap global.

Apabila menggunakan sintaks kelas ES6 React, pengikatan ini boleh dicapai dalam pembina melalui:

constructor(props) {
  super(props);
  this.changeContent = this.changeContent.bind(this);
}
Salin selepas log masuk

Sebagai alternatif, dengan kaedah React.createClass, pengendali acara terikat secara automatik pada contoh komponen. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa:

  • Mengikat fungsi mencipta fungsi baharu, jadi pertimbangkan untuk mengikatnya dalam pembina (menyala sekali) atau terus dalam pemaparan (mencipta fungsi baharu setiap pemaparan).

Contoh Ikatan Pembina:

constructor() {
  this.changeContent = this.changeContent.bind(this);
}
Salin selepas log masuk

Contoh render Mengikat:

render() {
  return <input onChange={this.changeContent.bind(this)} />;
}
Salin selepas log masuk

Selain itu, rujuk this.refs bukannya React.refs apabila mengakses rujukan komponen dalam pengendali acara.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengikat `ini` dengan Betul dalam Pengendali Acara React untuk Mengelakkan Ralat Konteks?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan