TypeError: React this.setState is Not a Function
Semasa membangunkan aplikasi React yang berintegrasi dengan API pihak ketiga, anda boleh menghadapi ralat "TypeError: this.setState bukan fungsi" biasa. Isu ini timbul apabila mengendalikan respons API dalam komponen kelas.
Coretan kod yang disediakan menggambarkan ralat:
<code class="javascript">componentDidMount:function(){ 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); } }); }, function(){ console.info("API initialisation failed"); }, '5.34'); },</code>
Punca dan Penyelesaian Punca:
Punca ralat ini terletak pada konteks fungsi panggil balik yang bersarang dalam panggilan VK.api. Apabila panggilan balik dipanggil, ia wujud dalam skop leksikal yang berbeza dan kehilangan akses kepada konteks komponen induk ini. Akibatnya, kaedah setState tidak dikenali sebagai fungsi dalam panggilan balik.
Untuk menyelesaikan isu ini, anda perlu mengikat konteks komponen (ini) kepada panggilan balik menggunakan .bind(this) kaedah. Ini memastikan bahawa kaedah setState kekal boleh diakses dalam panggilan balik.
Coretan Kod Kemas Kini:
<code class="javascript"> 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');</code>
Kesimpulan:
Mengikat konteks komponen kepada fungsi panggil balik yang mengakses pembolehubah atau kaedah ahli adalah penting untuk mengelakkan ralat "TypeError: this.setState is not a function" dalam aplikasi React. Ini memastikan bahawa fungsi panggil balik mempunyai akses kepada skop yang betul dan boleh berinteraksi dengan keadaan komponen seperti yang dimaksudkan.
Atas ialah kandungan terperinci Cara Menyelesaikan Ralat \'TypeError: this.setState is Not a Function\' dalam Reaksi Apabila Mengintegrasikan dengan API Pihak Ketiga. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!