You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am working on redux for state management and using MVVM architecture. I have made a generic reducer that only returns the updated store. For each feature I make a class, let’s call it a sub-store, and make this class in AppStore as a data member to maintain its own state. Now for each sub-store, I made a reducer that extends the generic reducer for common operations. My generic reducer takes the old sub-store and takes the new sub-store as action and depending on the API state e.g. (‘isLoading’, ’success’), updates the store. Since reducers are supposed to have logic. I am processing and calculating the new sub-store state either in thunkAction or in ViewModel and dispatching the Action only when the new sub-store is ready to be updated. Let's say I want to update the data member isNewUser. I will do this in ThunkAction:
Am I doing it right? In this way, the reducer does not have much logic despite some specific functionalities that may be required by a specific sub-store.
As it can be seen in the above snippet I created an instance of UserLoginStore and kept the updated store in that and then dispatched the action to the reducer where the actual state will be updated for the application.
// sub-store class
UserLoginStore {
final UserModel userModel;
final bool isNewUser;
final ApiResState apiResState;
}
//main store
class AppStore {
final QueriesStore queriesStore;
final UserLoginStore userLoginStore;
final UserExistsModel userExistsStore;
}
//generic Action
class ApiResponseAction<T> {
ApiResState apiResState;
T? updateStore; //only populated if response is a success
ApiResponseAction({required this.apiResState, this.updateStore});
}
// generic reducer
abstract class AppStateReducer<T> {
T apiResponse(state, ApiResponseAction<T> action) {
switch (action.apiResState) {
case ApiResState.isLoading:
return state!.copyWith(apiResState: action.apiResState);
case ApiResState.success:
return action.updateStore == null
? state.copyWith(apiResState: action.apiResState)
: action.updateStore;
}
}
Reducer<T> get apiResponseReducer => combineReducers<T>([
TypedReducer<T, ApiResponseAction<T>>(apiResponse),
]);
}
The text was updated successfully, but these errors were encountered:
I am working on redux for state management and using MVVM architecture. I have made a generic reducer that only returns the updated store. For each feature I make a class, let’s call it a sub-store, and make this class in AppStore as a data member to maintain its own state. Now for each sub-store, I made a reducer that extends the generic reducer for common operations. My generic reducer takes the old sub-store and takes the new sub-store as action and depending on the API state e.g. (‘isLoading’, ’success’), updates the store. Since reducers are supposed to have logic. I am processing and calculating the new sub-store state either in thunkAction or in ViewModel and dispatching the Action only when the new sub-store is ready to be updated. Let's say I want to update the data member
isNewUser
. I will do this in ThunkAction:Am I doing it right? In this way, the reducer does not have much logic despite some specific functionalities that may be required by a specific sub-store.
As it can be seen in the above snippet I created an instance of UserLoginStore and kept the updated store in that and then dispatched the action to the reducer where the actual state will be updated for the application.
The text was updated successfully, but these errors were encountered: