Skip to content

Instantly share code, notes, and snippets.

@designdevy
Forked from jakejrichards/reducer.ts
Created August 3, 2020 06:08
Show Gist options
  • Save designdevy/207272343fcc9ecdc226bd9a0ae258b1 to your computer and use it in GitHub Desktop.
Save designdevy/207272343fcc9ecdc226bd9a0ae258b1 to your computer and use it in GitHub Desktop.
import produce from 'immer';
import { ApplicationState, ApplicationAction } from './types';
export const initialState: ApplicationState = {
loading: {
users: false,
},
users: [],
}
const reducer = (state = initialState, action: ApplicationAction) => {
switch (action.type) {
case "loadUsersRequest":
return produce(state, draft => {
draft.loading.users = true;
});
case "loadUsersSuccess":
return produce(state, draft => {
draft.loading.users = false;
draft.users = action.users;
});
case "loadUsersError":
return produce(state, draft => {
draft.loading.users = false;
});
}
}
export default reducer;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment