Wednesday, 17 October 2018

Independent Redux

Independent Redux const redux = require ('redux'); // using node
const createStore = redux.createStore;

// initialize the state
const initialState = { counter: 0 }

// REDUCER
const rootReducer = (state= initialState, action) => { // set the initial state
    if (action.type === 'INC_COUNTER')
        return {
            ...state, // copy the old state - prevent changing the original state
            counter: state.counter + 1 // read the old state and update it to a new object
        };

    if (action.type === 'ADD_COUNTER')
        return {
            ...state, // copy the old state - prevent changing the original state
            counter: state.counter + action.value // read the old state and update it to a new object
        };

    return state; // finally return the state
}

// STORE
const store = createStore(rootReducer);
console.log(store.getState());

// SUBSCRIPTION - execute when state is updated - when action reach to reducer
store.subscribe (() => { console.log('[Subscription]', store.getState()); });

// DISPATCHER - Action
store.dispatch({type: 'INC_COUNTER'}); // for convention, use uupercase type
store.dispatch({type: 'ADD_COUNTER', value: 10}); // property name (value) is up to us
console.log(store.getState());


No comments:

SQL: Generate a range of numbers

SELECT ones.n + 10*tens.n + 100*hundreds.n + 1000*thousands.n FROM       (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n),      (VALU...