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

Mary-Kate Olsen
Lepaskan: 2024-10-24 05:03:30
asal
891 orang telah melayarinya

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);
    }
});
Salin selepas log masuk

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));
Salin selepas log masuk

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');
Salin selepas log masuk

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!

sumber:php
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!