码迷,mamicode.com
首页 > 移动开发 > 详细

[Redux] Wrapping dispatch() to Log Actions

时间:2016-06-07 06:36:54      阅读:339      评论:0      收藏:0      [点我收藏+]

标签:

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;

 

技术分享

[Redux] Wrapping dispatch() to Log Actions

标签:

原文地址:http://www.cnblogs.com/Answer1215/p/5565718.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!