TypeError:_store_js__WEBPACK_IMPORTED_MODULE_12__.default.subscribe 不是函数

问题描述 投票:0回答:2

我有一个主要的应用程序组件并正常订阅商店:

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;

我收到此错误:

这听起来很像一个错误。在谷歌上找不到任何东西。你知道为什么会这样吗?

javascript reactjs npm react-redux redux-saga
2个回答
0
投票

发现问题:我必须在 sagaMiddleware 上

applyMiddleware

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;

0
投票

解决问题。您可以添加 redux chrome 扩展,这行代码需要添加到您的 redux 商店中:

**conststore=createStore(rootReducers,window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());**

总体而言,您的 redux 存储应该如下所示:

import { createStore } from "redux";

从“./reducers”导入rootReducers;

const store=createStore(rootReducers,窗口。REDUX_DEVTOOLS_EXTENSION && 窗口。REDUX_DEVTOOLS_EXTENSION());

导出默认商店;

© www.soinside.com 2019 - 2024. All rights reserved.