Estoy usando el operador de propagación ES6 en mi aplicación react-redux de esta manera
var defaultState = {val:1, items:[]};
export default function(state=defaultState, action){
switch(action.type){
case 'ADD_BOOK':
state.val = 0;
return {
...state,
items:action.payload.data.result
};
El problema es cada vez que obtengo datos nuevos de action.payload.data.result
asignados a los elementos. Quiero tener datos concatenados del estado anterior. Alguien puede ayudar.
2 respuestas
Esto debería funcionar.
return {
...state,
items: [
...state.items,
...aciton.payload.data.result
]
}
Entonces, lo que realmente necesita hacer aquí es concatenar los elementos existentes y los que devuelve su carga útil.
Suponiendo que este sea el caso, debe crear una nueva matriz a partir de la matriz de elementos antiguos y nueva. También desea evitar la mutación del estado existente.
Devuelve un estado completamente nuevo de tu reductor. Haga esto clonando el estado existente y agregando su nueva matriz de elementos:
case 'ADD_BOOK':
var newState = Object.assign({}, state, {val:0}); // clones the existing state and adds our new val
newState.items = newState.Items.concat(action.payload.data.result);
return newState;
Hay formas más limpias de hacer esto con la sintaxis extendida o las bibliotecas, como inmutable, pero este ejemplo logrará explícitamente lo que tenemos que hacer.
Preguntas relacionadas
Preguntas vinculadas
Nuevas preguntas
reactjs
React es una biblioteca de JavaScript para crear interfaces de usuario. Utiliza un paradigma declarativo basado en componentes y tiene como objetivo ser eficiente y flexible.