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 ?
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.