2

次のボイラープレートの例を使用しており、redux devtools のクロム拡張機能で動作するように構成しようとしています。

import { createStore, applyMiddleware } from 'redux'
import thunkMiddleware from 'redux-thunk'
import apiMiddleware from '../middleware/api'
import createLogger from 'redux-logger'
import rootReducer from '../reducers'


const logger = createLogger({
  level: 'info',
  collapsed: false,
  logger: console,
  predicate: (getState, action) => true
})

const createStoreWithMiddleware = applyMiddleware(
  thunkMiddleware,
  apiMiddleware,
  logger
)(createStore)

export default function configureStore(initialState) {
  const store = createStoreWithMiddleware(rootReducer, initialState)

  if (module.hot) {
    // Enable Webpack hot module replacement for reducers
    module.hot.accept('../reducers', () => {
      const nextRootReducer = require('../reducers')
      store.replaceReducer(nextRootReducer)
    })
  }

  return store

}

次のように追加しようとしましたが、ウィンドウが定義されていないというエラーが発生します。

import { compose, createStore, applyMiddleware } from 'redux'

const createStoreWithMiddleware = compose(applyMiddleware(
  thunkMiddleware,
  apiMiddleware,
  logger
),window.devToolsExtension ? window.devToolsExtension() : f => f)(createStore)

reudx-devtools 拡張機能のサンプル ページに示されているものとは構造が多少異なると思いますが、指を置くことはできません。

ミドルウェアと拡張機能を使用して正しい方法でストアをセットアップするにはどうすればよいですか?

4

2 に答える 2

2
typeof window === 'object' && typeof window.devToolsExtension !== 'undefined'
  ? window.devToolsExtension()
  : f => f

これでエラーが修正されます。

于 2016-06-15T07:06:42.097 に答える