• [Redux] Wrapping dispatch() to Log Actions


    We will learn how centralized updates in Redux let us log every state change to the console along with the action that caused it.

    import { createStore } from 'redux';
    import throttle from 'lodash/throttle';
    import todoApp from './reducers';
    import { loadState, saveState } from './localStorge';
    
    const addLoggingToDispatch = (store) => {
    
        const rawDispatch = store.dispatch;
    
        // If browser not support console.group
        if (!console.group) {
            return rawDispatch;
        }
    
        return (action) => {
            console.group(action.type);
            console.log('%c prev state', 'color: gray', store.getState());
            console.log('%c action', 'color: blue', action);
            const returnValue = rawDispatch(action);
            console.log('%c next state', 'color: green', store.getState());
            console.groupEnd(action.type);
            return returnValue;
        };
    };
    
    const configureStore = () => {
        const persistedState = loadState();
        const store = createStore(todoApp, persistedState);
    
        // If in production do not log it
        if (process.env.NODE_ENV !== 'production') {
            store.dispatch = addLoggingToDispatch(store);
        }
    
        store.subscribe(throttle(() => {
            saveState({
                todos: store.getState().todos,
            });
        }, 1000));
    
        return store;
    };
    
    export default configureStore;

  • 相关阅读:
    Filecoin:一种去中心化的存储网络(二)
    Filecoin:一种去中心化的存储网络(一)
    HTTP
    数据结构中的查找
    剑指offer-高质量的代码
    C++中STL容器的比较
    PBFT算法的相关问题
    springmvc最全约束
    springmvc入门(一)
    spring入门(一)
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5565718.html
Copyright © 2020-2023  润新知