J'ai un état à Redux qui rend actuellement en train de rendre comme suit:
avant de cliquer: strong> p> Actuellement, les cas dans le réducteur sont les suivants: p> La partie incorrecte est la suivante: p>
3 Réponses :
Vous devriez simplement être capable d'appeler Supprimer état [action.id] code>. Bien que vous êtes dans une fonction réducteur, vous devez d'abord prendre une copie de l'État, supprimez-la, puis renvoyez la version copiée. case: 'HANDLE_DECREASE_CHANGE':
const next = {...state}
delete next[action.id]
return next
C'est déjà une copie, vous pouvez donc simplement retourner suivant code> au lieu de la destruction pour créer un troisième objet, mais une bonne réponse.
C'est vrai, vous ne voulez pas muter état code>, mais vous en avez fait une copie en effectuant const next = {... Etat} code>. Donc, tout ce que je dis est techniquement, vous pouvez simplement faire retour suivant code>
@Brianthompson vous êtes absolument juste. J'ai mis à jour ma réponse en conséquence. C'était une force d'habitude qui écrivait toujours de retour {...} dans les réducteurs. J'ai mal interprété votre commentaire original, c'est pourquoi j'ai supprimé ma réponse, car elle n'avait aucun sens
ou l'extraire avec les paramètres de repos: p>
Vous définissez de nouvelles propriétés sur l'objet de l'état, pour supprimer, puis vous devez utiliser Supprimer code>. N'oubliez pas de faire une copie de la sate actuelle d'abord. const iniitalState = {
index: 0,
elements: []
}
case 'HANDLE_INCREASE_CHANGE': {
state.elements.push({
open:false,
negation: false,
close: false,
bool: 'and'
})
return {...state, index: state.index + 1, elements: [...state.elements] }
}
case 'HANDLE_DECREASE_CHANGE': {
let newElements = [...state.elements]
newElements.splice(action.indexToRemove, 1) // Removes Element
return {...state, index: state.index - 1, elements: [...newElements] }
}
Est-ce que cela répond à votre question? Comment puis-je supprimer une propriété d'un objet JavaScript? < / a>