dispatch(action()) para activar una action desde fuera de mi componente de reacción. Está funcionando correctamente porque activa mi acción y actualiza el nuevo artículo en mi store . El problema es que parece estar restableciendo por completo todo lo demás en mi store , lo que al menos para mí hace que sea más un problema de lo que vale.
Vale la pena señalar: estoy usando next.js .
Aquí hay una idea básica de mi flujo:
Tengo una carpeta de utilidades con un servicio desde el que envío esta acción:
import store from './store'; store.dispatch(myAction());tengo mis acciones
export const myAction = () => ({ type: HELP_ME, payload: true, }); const initialState = { reducerVar: fase, otherExistingVar: {}, otherExistingVarTwo: null, otherExistingThree:null, otherExistingVarFour: false, }; const myReducer = (state = initialState, action) => { switch (action.type) { case HELP_ME: { const reducerVar = action.payload; } default: { return state; } } }; export default myReducer; No estoy seguro de si estoy haciendo un mal uso store.dispatch() porque no veo por qué alguien usaría esta técnica si elimina por completo los datos existentes en la tienda. ¿O hay una mejor manera de activar esta simple acción desde fuera de mi componente?
Básicamente, quiero dispatch esta acción sin borrar por completo mi tienda, tal como lo haría si estuviera en un componente.
¡Gracias!
Lo que intentas hacer está bien. Pero su reductor debe devolver el estado completo con su cambio realizado por la acción como se muestra a continuación.
const myReducer = (state = initialState, action) => { switch (action.type) { case HELP_ME: const reducerVar = action.payload; return {...state, reducerVar } default: return state; } };debe devolver el estado con valor en reductor como este.
const myReducer = (state = initialState, action) => { switch (action.type) { case HELP_ME: { return {...state, reducerVar : action.payload} } default: { return state; } } };