redux-wrapper-extended
Version:
Short Cut Reducer definition.
85 lines (60 loc) • 2.05 kB
text/typescript
import { ReducerWrapper, StoreWrapper, combineReducerWrapper } from '../src';
export default function () {
const countReducer1Wrapper = new ReducerWrapper<number>(2) // this initial value is simply ignored
.addHandler("INCREMENT", (state, payload) => {
return state + payload;
})
.addHandler("DECREMENT", (s, p) => {
return s - p;
})
const countReducer2Wrapper = new ReducerWrapper(1) // this initial value is simply ignored
.addPropChangedHandler("SET_VALUE");
const finalCountReducerWrapper = new ReducerWrapper(0)
.withHandlersFromOtherReducerWrappers([
countReducer1Wrapper,
countReducer2Wrapper
]);
var reducers = combineReducerWrapper<any>({
count: finalCountReducerWrapper.getReducer(),
});
var state = {
count: 0
};
var storeWrapper = new StoreWrapper(reducers, state);
var store = storeWrapper.getStore();
store.subscribe(() => {
console.log("Store changed", store.getState());
console.log("")
});
// set count to 10
console.log("SET_VALUE TO 10");
storeWrapper.dispatch("SET_VALUE", 10);
// add 3 to current state
console.log("INCREMENT 3");
storeWrapper.dispatch("INCREMENT", 3);
// subtract 2 from current state
console.log("DECREMENT 2");
storeWrapper.dispatch("DECREMENT", 2);
var anotherReducerWrapper = ReducerWrapper.importFrom<any>(reducers, null)
anotherReducerWrapper.addHandler("MULTIPLIED_BY", (state, payload) => {
return {
count: state.count * payload
}
})
storeWrapper = new StoreWrapper(anotherReducerWrapper.getReducer(), {
count: 300
});
store = storeWrapper.getStore();
store.subscribe(() => {
console.log("Store changed", store.getState());
console.log("")
});
// add 3 to current state
console.log("INCREMENT 3");
storeWrapper.dispatch("INCREMENT", 3);
// subtract 2 from current state
console.log("DECREMENT 2");
storeWrapper.dispatch("DECREMENT", 2);
console.log("MULTIPLIED BY 4");
storeWrapper.dispatch("MULTIPLIED_BY", 4);
}