Estoy tratando de configurar Redux para reemplazar el retroceso y me gustaría mantener el estilo de implementación del retroceso. Uno donde puedes hacer algo como
A) setState({ name: 'tim', id: 5 })o
B) setState(({name}: User) => ({ name, id: 5 }));probé con
type PropertyFunction<T> = (newState: Partial<T>) => T; type StateSetter<S> = Partial<S> | PropertyFunction<S>; export const stateSetter = <T>(dispatch: Dispatch, setAction: ActionCreatorWithPayload<Partial<T>>, state: T) => { return (newState: StateSetter<T>) => { if (typeof newState === 'function') { dispatch(setAction(newState(state))); } else { dispatch(setAction(newState)); } }; };Pero la función stateSetter no acepta funciones , solo (un usuario)
Lo que significa que solo puedo hacer A) pero no B)
Aquí está mi simple reductor setState
export const alertSlice = createSlice({ name: 'user', initialState, reducers: { set: (state: AlertState, action: PayloadAction<Partial<AlertState>>) => { state = { ...state, ...action.payload }; }, }, }); export const { set: setAlertAction } = alertSlice.actions;¿Puedes usar otras alternativas como MobX, Jotai o Valtio?
Redux realmente no está destinado a usarse de esta manera: las acciones deben describir los eventos que ocurren en su aplicación y la lógica que calcula el siguiente estado debe vivir en el reductor.
Si desea la lógica fuera de la tienda, estará mucho mejor con otra biblioteca y se sentirá mucho "menos extraño" de usar.