Mengapa Saya Tidak Boleh Mengakses 'setState' dalam Komponen Reaksi Saya?

Patricia Arquette
Lepaskan: 2024-11-05 06:20:02
asal
592 orang telah melayarinya

Why Can't I Access 'setState' in My React Component?

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

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

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!

sumber:php.cn
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