javascript - 类型错误:_store_js__WEBPACK_IMPORTED_MODULE_12__.default.subscribe 不是函数
问题描述
我有一个主要的 App 组件并正常订阅商店:
class App extends Component {
constructor(props) {
super(props)
this.state = {}
this.unsubscribe = store.subscribe(() => {
console.log(store.getState());
this.setState(store.getState());
})
}
render() {
return (
<Provider store={store}>
<div id="App">
<MainNavbar />
<ContentHandler />
<Footer />
</div>
</Provider>
);
}
}
如果我store.js
只使用根减速器创建商店,一切正常:
const store = createStore(reduceAppState);
不过,如果我将 saga 作为中间件创建它:
import { createStore } from 'redux'
import createSagaMiddleware from 'redux-saga'
import { composeWithDevTools } from 'remote-redux-devtools';
import reduceAppState from './reducers'
const sagaMiddleware = createSagaMiddleware()
const composeEnhancers = composeWithDevTools({trace: true, traceLimit: 25})
const store = createStore(reduceAppState, undefined, composeEnhancers(
sagaMiddleware
));
export default store;
我收到此错误:
这听起来很像一个错误。在谷歌上找不到任何东西。你知道为什么会这样吗?
解决方案
发现问题:我不得不applyMiddleware
在 sagaMiddleware 上:
import { createStore, applyMiddleware } from 'redux'
import createSagaMiddleware from 'redux-saga'
import { composeWithDevTools } from 'remote-redux-devtools';
import reduceAppState from './reducers'
const sagaMiddleware = typeof createSagaMiddleware === 'function' ? createSagaMiddleware() : createSagaMiddleware.default()
const composeEnhancers = composeWithDevTools({trace: true, traceLimit: 25})
const store = createStore(reduceAppState, composeEnhancers(
applyMiddleware(sagaMiddleware)
));
export default store;
推荐阅读
- jupyter-notebook - 如何限制用户可以在 Jupyter Notebook 中输入的某些字符的数量
- c - 如何将 C 中分配的字符串返回给 Ada 并在 Ada 中释放它?
- excel - 连接符号,在 Word doc 和 Range.MoveEndUntil Cset:= 段落符号 & "2" & "." 中查找文本
- android - Android CoordinatorLayout 对齐 3 个视图,中间视图填充空间
- amazon-web-services - 需要将 TTL 添加到 3bln+ 记录 ddb 表
- php - 为什么 Onesignal 通知不会导致应用程序打开?
- kotlin - 如何使用 Exposed 和 Kotlin 在 db 中设置当前日期
- html - 删除表格中的列行
- javascript - 如何为 L.canvas 渲染器上绘制的传单标记设置动画?
- c++ - C++20 概念:当模板参数符合多个概念时,选择哪个模板特化?