Maison > interface Web > js tutoriel > Pourquoi ne puis-je pas accéder à « setState » dans mon composant React ?

Pourquoi ne puis-je pas accéder à « setState » dans mon composant React ?

Patricia Arquette
Libérer: 2024-11-05 06:20:02
original
622 Les gens l'ont consulté

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

Erreur de type non interceptée : impossible d'accéder à la propriété 'setState' dans React

Lorsque vous travaillez avec React, vous pouvez rencontrer l'erreur "Erreur de type non interceptée : impossible lire la propriété 'setState' de non défini." Ce problème se produit lors de la tentative d'accès à la méthode 'setState' d'un composant qui n'est pas correctement lié.

La méthode 'setState' est utilisée pour mettre à jour l'état d'un composant React. Lors de la définition d'un composant, ses méthodes doivent être liées à l'instance du composant pour garantir que « ceci » fait référence à la portée correcte. Cette erreur survient souvent lorsque la méthode du composant est appelée en dehors du constructeur sans être explicitement liée.

Exemple :

Considérez l'extrait de code suivant :

<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>
Copier après la connexion

Dans cet exemple, la méthode 'delta' n'est pas liée au composant dans le constructeur. Par conséquent, lorsque 'delta' est appelé, 'this' ne fait pas référence à l'instance du composant et l'erreur se produit car 'setState' n'est pas accessible à partir de 'undefined'.

Solution :

Pour résoudre ce problème, il est nécessaire de lier correctement la méthode 'delta' au composant dans le constructeur :

<code class="javascript">constructor(props) {
    super(props);

    this.state = {
        count : 1
    };

    this.delta = this.delta.bind(this); // Correctly binding delta
}</code>
Copier après la connexion

En définissant 'this.delta = this.delta .bind(this)', vous attribuez la fonction liée à 'this.delta'. Cela garantit que lorsque « delta » est appelé, « this » fait référence à l'instance du composant, permettant l'accès à la méthode « setState ».

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal