recherche

Maison  >  Questions et réponses  >  le corps du texte

Solidjs : lors de l'utilisation de Map dans createStore, elle n'est pas mise à jour en cas de modification.

Je suis relativement nouveau sur Solidjs, j'oublie peut-être quelque chose, mais j'essaie de comprendre le problème ici en considérant l'exemple suivant :

const [state, setState] = createStore({ items: new Map() }); // e.g. Map<number, string>

Dans un composant, disons que je souhaite utiliser un état dérivé stocké, comme ceci :

export const Overview = () => {
    const count = () => state.items.size;

    return (<div>{count()</div>);
};

Si j'ajoutais maintenant une nouvelle entrée à la carte, j'aurais pensé que la propriété count se mettrait à jour automatiquement en raison des dépendances que j'ai utilisées.

J'ai essayé de remplacer la carte dans cet exemple par un tableau et cela a parfaitement fonctionné, le composant affichait les valeurs correctes et attendues.

Quelqu'un peut-il me diriger vers la bonne partie de la documentation, ou expliquer pourquoi les tableaux fonctionnent mais pas les cartes ?

P粉299174094P粉299174094510 Il y a quelques jours563

répondre à tous(1)je répondrai

  • P粉821274260

    P粉8212742602023-07-21 10:52:47

    Lorsque la valeur du signal change, il en informe ses abonnés, mais au lieu de définir une nouvelle valeur, vous y insérez une nouvelle entrée, cette opération n'est donc pas considérée comme une mise à jour. Vous devriez créer une nouvelle carte. Vous pouvez déplacer les valeurs insérées dans une nouvelle carte en clonant l'ancienne carte.

    répondre
    0
  • Annulerrépondre