Soy nuevo en React y Redux, por lo que esta es una pregunta de mejores prácticas.
Tengo un creador de acciones que activa una llamada a la API y envía la respuesta a mi reductor:
export function loadDrawSuccess(draw) { return { type: ActionTypes.LOAD_DRAW_SUCCESS, draw}; } export function loadDraw() { return function(dispatch) { dispatch(beginAjaxCall()); return drawApi.getDraw().then(draw => { dispatch(loadDrawSuccess(draw)); }).catch(() => { dispatch(ajaxCallError()); }); }; }
Ahora... En mi reductor, estoy procesando la respuesta para extraer los datos que necesito de ella...
function extractNextOpenDraw(draws) { if (!draws || typeof draws.content === 'undefined'){ return {}; } let openDraws = draws.content.filter(draw => {return draw.status === 'open';}); let sortedOpenDraws = openDraws.sort((draw1, draw2) => { return DateHelper.getDateObjectFromUtcDateString(draw1.closeTimeUtc) - DateHelper.getDateObjectFromUtcDateString(draw2.closeTimeUtc); }); return sortedOpenDraws[0]; } export default function drawReducer(state = initialState.draw, action) { switch (action.type) { case types.LOAD_DRAW_SUCCESS: { return objectAssign({}, extractNextOpenDraw(action.draw), {dateModified: action.dateModified}); } ........ default: return state; } }
mis preguntas son