Lors de la soumission d'un formulaire avec des valeurs mises à jour, je dois mettre à jour l'état pour refléter ces changements, mais je suis nouveau à Immutable.js et je ne sais pas comment faire cela.Puis-je mettre à jour divers éléments dans une liste Immutable dans une application React/Redux?
Est-il possible de passer une fonction en tant que 2ème argument pour définir ou mettre à jour pour mettre à jour les valeurs en fonction de certains critères.
J'ai une fonction qui reçoit un état et un tableau d'objets appelés valeurs. Les données des valeurs ressemble à ceci:
[
{
key: 'name',
value: 'fred'
},
{
key: 'height',
value: '201'
},
{
key: 'weight',
value: '78'
}
]
Je dois carte sur ces données, et la liste d'état, et mettre à jour les valeurs correspondantes dans la liste d'état avec le tableau de valeurs.
Comment puis-je faire cela. Je l'ai mis en place une fonction qui le réducteur appelle à mettre à jour l'état avec les nouvelles données, mais pas sûr exactement comment obtenir le résultat final
function updateValue(state, values = []) {
const items = state.get('items').map((i) => {
const key = i.get('key');
values.map(v => {
if (v.key === key) {
return state.update('value', v.value);
}
})
});
return state.update('items', /* Can I use a function here to replace the code above.. to update all of the items in the state List that correspond to the items in the measurements array (which have new values) */);
}
Merci beaucoup.
Mise à jour Essayé ce qui suit, mais obtenir l'erreur: Expected [K, V] tuple: i
function updateValue(state, values = []) {
const items = state.get('items').map((i) => {
const key = i.get('key');
values.map(v => {
if (v.key === key) {
return state.update('value', v.value);
}
})
});
return state.update('items', items);
}
Plus de détails sur l'erreur de Immuable:
function validateEntry(entry) {
if (entry !== Object(entry)) {
throw new TypeError('Expected [K, V] tuple: ' + entry);
}
}
Vous obtenez cette erreur car lorsque vous 'map' sur une instance de' Map', la fonction mapper prend une paire valeur/clé, donc quelque chose comme 'map ((k, v) => ....)' –