Maison >interface Web >Questions et réponses frontales >Que faire si les modifications du tableau de réaction ne sont pas mises à jour

Que faire si les modifications du tableau de réaction ne sont pas mises à jour

藏色散人
藏色散人original
2022-12-29 10:59:073302parcourir

Les modifications du tableau React ne sont pas mises à jour car les affectations de tableau dans js sont transmises par référence. La solution est la suivante : 1. Ouvrez le fichier de réaction correspondant ; 2. Utilisez l'opérateur spread pour créer un nouveau tableau et modifiez la référence mémoire ; utilisez "panes.push({key: panes.length,tab: `${panes.length + 1}`})" pour réaffecter la valeur.

Que faire si les modifications du tableau de réaction ne sont pas mises à jour

L'environnement d'exploitation de ce tutoriel : système Windows 10, React version 18.0.0, ordinateur Dell G3.

Que dois-je faire si le tableau de réaction change mais ne se met pas à jour ?

Lorsque l'attribut d'un élément d'un tableau d'état change en réaction, la page setState n'est pas mise à jour

Pendant le processus d'écriture du code, vous constaterez que si vous utilisez directement push et d'autres méthodes pour changer l'état, logiquement en parlant, push modifiera le tableau d'origine. Il devrait être mis à jour, mais l'état rendu ne changera pas.

Le problème que j'ai rencontré aujourd'hui est le suivant : après avoir modifié les éléments du tableau dans le composant, les données changent mais la page n'est pas restituée

On dit que c'est parce que le composant ne peut pas reconnaître les modifications dans le tableau, donc le la page n'est pas restituée

Alors laissez simplement le composant Lorsque vous sentez que vous avez changé, vous pouvez obtenir l'effet de rafraîchissement

Raison :

C'est parce qu'en js, l'affectation du tableau est passée par référence . array.push équivaut à changer directement le bloc de mémoire correspondant au tableau, mais la mémoire du tableau utilisé pour la comparaison dans React n'a pas changé et pointe vers la même mémoire SetState ne fait qu'une comparaison superficielle, donc le nouveau rendu n'est pas effectué. déclenché.

Vous pouvez utiliser l'opérateur spread pour créer un nouveau tableau et modifier la référence mémoire

Exigence :

Que faire si les modifications du tableau de réaction ne sont pas mises à jour

Solution : Réaffecter après déstructuration

const onClick = (key) => {// tab点击函数
    if (key === 'addTab') {
      panes.push({
        key: panes.length,
        tab: `筛选记录${panes.length + 1}`
      })
      setPanes([...panes])
    }
  }

Apprentissage recommandé : "Tutoriel vidéo React"

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!

Déclaration:
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