doit être mis à jour pour recevoir de nouveaux props.
il existe des moyens d'atteindre votre objectif :
1. composantDidUpdate vérifier si la valeur est modifiée, puis faire quelque chose
componentDidUpdate(prevProps){
if(prevProps.value !== this.props.value){ alert(prevProps.value) }
}
2. redux-promesse ( l'intergiciel distribuera la valeur résolue de la promesse)
export const updateState = (key, value)=>
Promise.resolve({
type:'UPDATE_STATE',
key, value
})
puis dans le composant
this.props.dispatch(updateState(key, value)).then(()=>{
alert(this.props.value)
})
2. redux-thunk
export const updateState = (key, value) => dispatch => {
dispatch({
type: 'UPDATE_STATE',
key,
value,
});
return Promise.resolve();
};
puis dans le composant
this.props.dispatch(updateState(key, value)).then(()=>{
alert(this.props.value)
})
0 votes
Utilisez-vous
thunk
?2 votes
Je pense
dispatch()
est une activité synchrone. L'état mis à jour doit être disponible dans la ligne suivante.4 votes
@PraneshRavi Je le pensais. Mais j'ai obtenu l'ancien état. Je n'ai pas utilisé
thunk
.0 votes
Quel est votre cas d'utilisation ? Vous avez mentionné un appel API ?
2 votes
La répartition de Redux est synchrone .
2 votes
Oui, la répartition est synchrone, mais la mise à jour ultérieure des accessoires du composant ne l'est pas. Par conséquent, l'état de redux est mis à jour dans la ligne suivante, mais les accessoires du composant ne le sont pas encore.
0 votes
Je pense que redux saga est une bonne solution, voir cette réponse
0 votes
Utilisez "useEffect" de l'API Hooks, une manière plus réactive de gérer cela.