UNPKG

redux-wrapper-extended

Version:

Short Cut Reducer definition.

58 lines (57 loc) 2.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var src_1 = require("../src"); function default_1() { console.log("CASCADING REDUCER"); var detailReducerWrapper = new src_1.ReducerWrapper() .addPropChangedHandler("SET_NAME", function (x) { return x.name; }) .addPropChangedHandler("SET_AGE", function (x) { return x.age; }, function (state, payload) { if (payload < 18) { return 18; } return payload; }); var emailReducerWrapper = new src_1.ReducerWrapper().addPropChangedHandler("SET_EMAIL"); var nameReducerWrapper = new src_1.ReducerWrapper().addPropChangedHandler("SET_NAME_ALSO"); var reducers = src_1.combineReducerWrapper({ // a reducer could have its "child" reducers, they are in action if the state is not changed by the 'parent' reducer detail: detailReducerWrapper.getReducer({ // override name: nameReducerWrapper.getReducer(), contacts: { // override contact in, state is relative to its context email: emailReducerWrapper.getReducer(), // maintain existence of 'phone' phone: src_1.uselessReducer, } }), }); var state = { detail: { name: "Anjar", age: 27, contacts: { email: "anjar.p.wicaksono@gmail.com", phone: "81807978" } } }; // HERE IS CASCADING IN ACTION var storeWrapper = new src_1.StoreWrapper(reducers, state); var store = storeWrapper.getStore(); store.subscribe(function () { console.log("Store changed", store.getState()); console.log(""); }); console.log("SET_NAME TO John"); store.dispatch({ type: "SET_NAME", payload: "John" }); console.log("SET_AGE TO 16, but capped at 18"); store.dispatch({ type: "SET_AGE", payload: 16 }); console.log("SET_AGE TO 23"); store.dispatch({ type: "SET_AGE", payload: 23 }); console.log("SET_NAME_ALSO TO Paul"); store.dispatch({ type: "SET_NAME_ALSO", payload: "Paul" }); console.log("SET_EMAIL TO john2001@gmail.com"); store.dispatch({ type: "SET_EMAIL", payload: "john2001@gmail.com" }); } exports.default = default_1;