用 Redux 配合 React 开发项目时遇到一个奇怪的问题,项目只能在 Chrome 浏览器下正确运行,其它的浏览器都会报如下错误:TypeError: undefined is not an object (evaluating 'b.apply')
猜测可能是由 Redux 引起的,于是搜索一番,找到了这个 Github Issues, 原来是因为只有我的 Chrome 浏览器装了 Redux DevTools 这个插件,而其它浏览器都没装,所以下面的代码会报错,
const store = createStore(
reducers,
compose(
applyMiddleware(thunk),
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
)
)
正确的做法是:
const store = createStore(
reducers,
compose(
applyMiddleware(thunk),
window.devToolsExtension ? window.devToolsExtension() : f => f
)
)
这样项目就不会在 Chrome 之外的浏览器报错了。