2017-07-24 37 views
0

有store.js如何安裝所有減速器? reactjs

import { routerMiddleware } from 'react-router-redux'; 
import { createStore, applyMiddleware, compose } from 'redux'; 
import thunk from 'redux-thunk'; 
import axios from 'axios'; 
import chalk from 'chalk'; 
import Immutable from 'immutable'; 
import type { Store } from '../types'; 
import rootReducer from './reducers'; 

export default (history: Object, initialState: Object = {}): Store => { 
    const middlewares = [ 
    thunk.withExtraArgument(axios), 
    routerMiddleware(history), 
    ]; 



    const enhancers = [ 
    applyMiddleware(...middlewares), 
    __DEV__ && typeof window === 'object' && typeof window.devToolsExtension !== 'undefined' ? 
     window.devToolsExtension({ 
      serialize: { 
       immutable: Immutable 
      } 
     }) : f => f, 
    ]; 

    const devToolEnhancers = __DEV__ && typeof window === 'object' && typeof window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ !== 'undefined' ? 
     window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({ 
      serialize: { 
       immutable: Immutable 
      } 
     }) : f => f; 

    const immutableState = Immutable.fromJS(initialState) 
    const store: Store = createStore(rootReducer, immutableState, compose(...enhancers)); 



    if (module.hot) { 
    // Enable Webpack hot module replacement for reducers 
    module.hot.accept('./reducers',() => { 
     try { 
     const nextReducer = require('./reducers').default; 

     store.replaceReducer(nextReducer); 
     } catch (error) { 
     console.error(chalk.red(`==> Reducer hot reloading error ${error}`)); 
     } 
    }); 
    } 



    return store; 
}; 

我需要讓所有減速

的的console.log的文件,我發現這個代碼:

const logger = store => next => action => { 
    console.group(action.type) 
    console.info('dispatching', action) 
    let result = next(action) 
    console.log('next state', store.getState()) 
    console.groupEnd(action.type) 
    return result 
} 

let createStoreWithMiddleware = applyMiddleware(logger)(createStore) 

let yourApp = combineReducers(reducers) 
let store = createStoreWithMiddleware(yourApp) 

,但我不知道如何結合起來。需要安慰previos和下一個rudecer狀態。嘗試許多變化,但不能做到這一點

+0

你可以嘗試用「終極版開發工具」播放;) –

+0

使用https://github.com/evgenyrodionov/redux-logger – lux

回答

1

你可以嘗試'redux-logger'中間件。它將在控制檯中記錄prevState和nextState。

import createLogger from 'redux-logger'; 

const middlewares = [ 
    thunk.withExtraArgument(axios), 
    routerMiddleware(history), 
    createLogger() 
    ]; 
+0

遺漏的類型錯誤:中間件是不是一個函數 –

+0

您可以添加行沒有與文件名稱,你得到這個錯誤。堆棧跟蹤也將起作用。 –

+0

** Redux Logger **最近更改了它的API。現在必須使用大括號導入:'從'redux-logger';'導入{createLogger}。請參閱[官方參考](https://github.com/evgenyrodionov/redux-logger#usage)中的用法。 –