Rumah > Artikel > hujung hadapan web > Mengapa Saya Tidak Boleh Mengakses 'setState' dalam Komponen Reaksi Saya?
Uncaught TypeError: Tidak Dapat Mengakses Harta 'setState' dalam React
Apabila bekerja dengan React, anda mungkin menghadapi ralat "Uncaught TypeError: Cannot baca harta 'setState' undefined." Isu ini berlaku apabila cuba mengakses kaedah 'setState' bagi komponen yang tidak terikat dengan betul.
Kaedah 'setState' digunakan untuk mengemas kini keadaan komponen React. Apabila mentakrifkan komponen, kaedahnya harus terikat pada contoh komponen untuk memastikan bahawa 'ini' merujuk kepada skop yang betul. Ralat ini sering timbul apabila kaedah komponen dipanggil di luar pembina tanpa terikat secara eksplisit.
Contoh:
Pertimbangkan coretan kod berikut:
<code class="javascript">class Counter extends React.Component { constructor(props) { super(props); this.state = { count : 1 }; this.delta.bind(this); // Binding delta incorrectly } delta() { this.setState({ count : this.state.count++ }); } render() { return ( <div> <h1>{this.state.count}</h1> <button onClick={this.delta}>+</button> </div> ); } }</code>
Dalam contoh ini, kaedah 'delta' tidak terikat pada komponen dalam pembina. Akibatnya, apabila 'delta' dipanggil, 'ini' tidak merujuk kepada contoh komponen dan ralat berlaku kerana 'setState' tidak boleh diakses daripada 'undefined'.
Penyelesaian:
Untuk menyelesaikan isu ini, adalah perlu untuk mengikat kaedah 'delta' dengan betul kepada komponen dalam pembina:
<code class="javascript">constructor(props) { super(props); this.state = { count : 1 }; this.delta = this.delta.bind(this); // Correctly binding delta }</code>
Dengan menetapkan 'this.delta = this.delta .bind(this)', anda memberikan fungsi terikat kepada 'this.delta'. Ini memastikan bahawa apabila 'delta' dipanggil, 'ini' merujuk kepada contoh komponen, membenarkan akses kepada kaedah 'setState'.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Mengakses 'setState' dalam Komponen Reaksi Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!