Create Reducer Slice
Here we define pure functions for the component that updates the state of the component.
to-do-component.reducer.ts
import { createReducerSlice } from "redux-rewire";
import { initialState } from "./to-do-component.init"; // import init from file generated in step 1
// The intial state created in the homeScreen.init.ts
export const reducerSlice = createReducerSlice(initialState, {
// @state is the latest state of the to-do component
// @actionData is the data passed while calling from to-do component
addInitialToDos: (state, actionData: string[], otherData: {
reduxKey: string, // component key reference used in the global state.
globalState: object // global state
}) => {
state.list = actionData;
return state;
},
add: (state, actionData: string, otherData: {
componentKey: string, // component key reference used in the global state
globalState: any // global state
}) => {
state.list.push(actionData);
return state;
},
});
Arguments
initialState
Initial state returned from createInitialState. This helps in providing state and its type to reducer pure functions.
Since we believe in composition, we are passing return type of last definition
reducerMap
- Key value pair, to define pure functions of reducers
- Each function provides 3 arguments
state- State of the current component (this is a draft state fromimmerlib we have used)actionData- Define type of actionData, this type definition is enforced when we call reducer action from inside viewotherData- This contains additional data you may use.reduxKey- This is the final key of the component against which redux has stored this component latest state.globalState- This contains whole redux state, we got usinggetState()api of redux.