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?
3 Réponses :
Vous devez supprimer le crochet carré
case AUDIO:
return {
...state,
audio: {
...state.audio,
...action.payload
}
}
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
Vous devez répartir Object action.payload comme:
case AUDIO:
return {
...state,
audio: {
...state.audio,
...action.payload
}
}
case audio:
return {
...state,
audio: {
...state.audio,
[action.payload]
}
}