1
votes

Comment passer un objet à un réducteur avec une clé d'état

Je crée une application avec React Native et j'essaie d'enregistrer de l'audio. Je voudrais passer un objet à mon action puis à mon réducteur afin de mettre à jour l'état.

Dans mon écran où j'appelle l'action:

const INITIAL_STATE = {
  audio: {
    recording: false,
    paused: false,
    stoppedRecording: false,
  }
}

case AUDIO:
return {
  ...state,
  audio: {
    ...state.audio,
    [action.payload]
  }
}

Action:

export const recordAudio = (change) => {
  return {
    type: AUDIO,
    payload: change
  };
};

Réducteur:

this.props.recordAudio({ stoppedRecording: true, recording: false, paused: false });

J'obtiens une erreur: jeton inattendu (fatal). J'ai aussi essayé sans crochets.

J'ai d'autres clés dans l'audio et il est plus facile de toutes les mettre à jour en passant directement clé / valeur, au lieu de faire une action séparée pour toutes. Existe-t-il une bonne façon de procéder?


0 commentaires

3 Réponses :


0
votes

Vous devez supprimer le crochet carré

case AUDIO:
return {
  ...state,
  audio: {
    ...state.audio,
    ...action.payload
  }
}


2 commentaires

hm, c'est ce que je pensais mais j'obtiens un jeton inattendu, attendu "," quand je l'essaye comme ça


@TomBomb: J'ai fait une erreur, vous devriez diffuser le action.payload car c'est un objet



1
votes

Vous devez répartir Object action.payload comme:

 case AUDIO:
        return {
          ...state,
          audio: {
            ...state.audio,
            ...action.payload
          }
        }


0 commentaires

2
votes
case audio:
return {
      ...state,
  audio: {
      ...state.audio,
    [action.payload]
  }
}

0 commentaires