Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Menyelesaikan Ralat \"this.setState bukan fungsi\" dalam Reaksi Apabila Mengikat Fungsi Panggilan Balik?

Bagaimana untuk Menyelesaikan Ralat \"this.setState bukan fungsi\" dalam Reaksi Apabila Mengikat Fungsi Panggilan Balik?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-24 05:03:30894semak imbas

How to Resolve

Ralat: "this.setState bukan fungsi" dalam React

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!

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