Así es como se ve mi reductor:
export default function catalogReducer(state = initialState.catalogItems, action){ switch (action.type) { case types.LOAD_CATALOG_SUCCESS: return { count:action.count, products :[...state['products'], action.catalogItems ? [...action.catalogItems['products']] : [] ] default: return state; } }Lo que quiero hacer:
Este es un reductor para cargar artículos de catálogo.
Los elementos provienen de una API paginada.
Problema:
Esperaba que el argumento de estado tuviera el estado anterior asociado, pero no, siempre obtiene valor de initialState con el que inicializo el estado al iniciar la aplicación.
¿Porqué es eso? ¿Cuál es la forma de evitarlo?
Básicamente, necesito que se devuelva el conjunto completo de elementos a través de la API de paginación y no solo los productos para una página determinada en la matriz de products . Lo que termino es solo la matriz de productos de la última llamada api como state.products siempre se inicializa como una matriz vacía
Además, en términos generales, estoy muy confundido acerca de cómo lidiar con la API de paginación en reaccionar y redux y no puedo encontrar un ejemplo sencillo.
Se agradecería una dirección.
Así es como se ve el archivo initialState.js:
import cookie from 'react-cookie'; export default { categories:[], sessionId: cookie.load('sessionId') || '', youMayLikeItems : [], catalogItems: {'products': []} }//Este archivo es para centralizar la inicialización de estados en la tienda
Básicamente, debe recordar que no debe mutar el estado.
export default function catalogReducer(state = initialState, action) { switch (action.type) { case types.LOAD_CATALOG_SUCCESS: return { ...state, catalogItems: { count: action.count, products: [ ...state.catalogItems['products'], action.catalogItems ? action.catalogItems['products'] : {} ] } default: return state; } }Puede encontrar más ejemplos útiles aquí
También es mejor hacer estados simples ( docs ) sin objetos profundos y usar Immutable.js