Rumah > Artikel > hujung hadapan web > Bagaimana untuk Menyelesaikan Ralat \'this.setState bukan fungsi\' dalam Reaksi Apabila Mengikat Fungsi Panggilan Balik?
Ralat ini biasanya berlaku apabila cuba mengakses this.setState dalam fungsi panggil balik yang tidak terikat kepada konteks yang betul. Dalam React, ini merujuk kepada contoh komponen dan adalah penting untuk mengekalkan konteks yang betul untuk mengakses kaedahnya seperti setState.
Dalam coretan kod yang diberikan, isu timbul dalam fungsi panggil balik panggilan API VK:
VK.api('users.get',{fields: 'photo_50'},function(data){ if(data.response){ this.setState({ //the error happens here FirstName: data.response[0].first_name }); console.info(this.state.FirstName); } });
Fungsi panggil balik ditakrifkan dalam skop yang berbeza dan ini tidak merujuk kepada contoh komponen. Untuk menyelesaikan isu ini, anda perlu mengikat fungsi panggil balik kepada konteks yang betul:
VK.api('users.get',{fields: 'photo_50'},function(data){ if(data.response){ this.setState({ //the error happens here FirstName: data.response[0].first_name }); console.info(this.state.FirstName); } }.bind(this));
Dengan mengikat fungsi panggil balik pada ini, kami memastikan bahawa ini merujuk kepada contoh komponen dalam panggilan balik, membolehkan kami untuk akses this.setState.
Dalam sesetengah kes, mungkin perlu untuk mengikat kedua-dua panggilan permulaan dan API:
VK.init(function(){ console.info("API initialisation successful"); VK.api('users.get',{fields: 'photo_50'},function(data){ if(data.response){ this.setState({ //the error happens here FirstName: data.response[0].first_name }); console.info(this.state.FirstName); } }.bind(this)); }.bind(this), function(){ console.info("API initialisation failed"); }, '5.34');
Ini memastikan bahawa ini merujuk kepada contoh komponen sepanjang keseluruhan proses , termasuk permulaan dan panggilan API.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \'this.setState bukan fungsi\' dalam Reaksi Apabila Mengikat Fungsi Panggilan Balik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!