0
votes

Supprimer la clé de l'état (Redux Réducteur)

J'ai un état à Redux qui rend actuellement en train de rendre comme suit:

avant de cliquer: xxx

après clic: < / strong> xxx

J'aimerais supprimer complètement la clé 1 (en général, c'est [action.id]).

Actuellement, les cas dans le réducteur sont les suivants: xxx

La partie incorrecte est la suivante: xxx P> pouvez-vous m'aider s'il te plaît? merci beaucoup!


1 commentaires

3 Réponses :


4
votes

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


3 commentaires

C'est déjà une copie, vous pouvez donc simplement retourner suivant 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 , mais vous en avez fait une copie en effectuant const next = {... Etat} . Donc, tout ce que je dis est techniquement, vous pouvez simplement faire retour suivant


@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



0
votes

Supprimer la touche que vous souhaitez supprimer: xxx

ou l'extraire avec les paramètres de repos: xxx


0 commentaires

2
votes

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] }
}


0 commentaires