Je suis nouveau à réagir/redux et j'essaie de stocker un de mes objets dans l'état redux comme une carte/hachage avec les clés étant les clés primaires des objets de la base de données et les valeurs étant l'objet lui-même. Cependant, l'état semble être surévalué chaque fois que je mets à jour et la nouvelle valeur que j'ajoute est la seule qui reste. Voici mon code:réagir/redux imbriqué état problème
import { RECEIVE_CURRENT_SCAN_RESULT } from '../constants';
const initialState = {
currentScanResult: {info:{}, results:[]},
};
export default createReducer(initialState, {
[RECEIVE_CURRENT_SCAN_RESULT]: (state, payload) =>
Object.assign({}, state, {
currentScanResult: payload
})
});
export function createReducer(initialState, reducerMap) {
return (state = initialState, action) => {
const reducer = reducerMap[action.type];
return reducer
? reducer(state, action.payload)
: state;
}
}
Je voudrais juste passer dans mon objet:
{id: 1, thing: "blue"}
et ont l'état mis à jour avec elle. Ensuite, si je passe:
{id: 2, thing: "red"}
Je voudrais que mon état Redux pour refléter:
currentScanResult: {1: {id: 1, thing: "blue"}, 2: {id: 2, thing: "red"}}
est-il un moyen facile pour moi de faire cela? Est-ce que redux sera rendu si je mets à jour une valeur imbriquée? Par exemple si je passe:
{id: 2, thing: "purple"}
=> currentScanResult: {1: {id: 1, thing: "blue"}, 2: {id: 2, thing: "purple"}}
Je voudrais voir un comportement comme celui-ci. Ive regardé dans JS Immutable Je me demande simplement si je peux faire ce simple cas d'utilisation sans elle?
Toute aide est appréciée! Merci!
Merci! Savez-vous si l'état mettra à jour correctement avec l'emboîtement redux comme ça? des inconvénients? – BC00
Il n'y a pas de problème. Plus les données sont imbriquées, plus il devient fastidieux de mettre à jour les structures internes. Voir ces documents pour plus de détails: http://redux.js.org/docs/recipes/reducers/ImmutableUpdatePatterns.html – JulienD
est cet état de mutation, pour une raison quelconque, mon composant n'est pas re-rendu lorsque les valeurs imbriquées sont mises à jour. – BC00