en la función reductora, quiero inicializar el estado inicial que primero se actualiza con algunos datos a través de una llamada API (por Axios), luego pasará a través de la función reductora.
El problema es que cuando se está actualizando a través de una llamada a la API, el reductor no ha tomado el estado actualizado, lo que me di cuenta cuando accedí al estado inicial en un componente diferente, que me mostrará la primera inicialización.
Estado inicial
var seriesData = { horror:[], comedi:[], romantic:[] }Llame a la API a través de AXIOS e intente actualizar el estado inicial
var gen_typ = ['horror','comedi','romantic'] gen_typ.forEach(elm => { axios.get(`${process.env.REACT_APP_SD_API}${elm}`) .then((result) => { seriesData = {...seriesData,elm:result} }).catch((err) => { console.log(err); }); });Función reductora
export function SD_Operation(state = seriesData,action){ switch(action.type){ case "GET_MORE": return{ ...state, [action.payload.genTyp]:[...state[action.payload.genTyp],action.payload.data]} default: return state; } }cuando accedo al estado inicial en uno de mis componentes y salgo de la consola
componente interior
var Series_data = useSelector(state => state.SD_Operation); useEffect(()=>{ console.log('@login page',Series_data) ; },[])salida que obtengo
@página de inicio de sesión {horror: Array(0), comedia: Array(0), romántica: Array(0)}
comedi: [] horror: [] romantic: []salida que espero
una matriz de datos
{horror: Array (algo largo), comedia: Array (algo largo), romántico: Array (algo largo)}
comedi: [{},{}....] horror: [{},{}....] romantic: [{},{}....]Este es un escenario típico, y comúnmente resuelto de manera diferente:
componentDidMount o a través de un useEffect de uso con una matriz de dependencia vacía).