【问题标题】:TypeError: Cannot read property 'dispatch' of nullTypeError:无法读取 null 的属性“调度”
【发布时间】:2020-12-11 10:34:11
【问题描述】:

我在尝试将我的 firestore 连接到 reducer 后刚刚收到此错误,因为我注意到 cnt 从我的 firestore 获取任何数据,所以问题出在 index.js 文件中,因为它发生了在我在 v2 到 v3 之间进行迁移之后,当错误开始时,如果你能帮我找出问题,请帮忙

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
import {createStore, applyMiddleware, compose } from 'redux'
import rootreducer from './store/reducers/rootreducer'
import { Provider } from 'react-redux'
import thunk from 'redux-thunk'
import { createFirestoreInstance, getFirestore, reduxFirestore } from 'redux-firestore'
import { ReactReduxFirebaseProvider, getFirebase} from 'react-redux-firebase'
import fbconfig from './config/fbconfig'
import firebase from 'firebase/app'
const store = createStore(
  rootreducer,
  compose(
      applyMiddleware(thunk.withExtraArgument({ getFirestore, getFirebase })),
      reduxFirestore(firebase, fbconfig)
  )
);

const rrfProps = {
  firebase,
  config: fbconfig,
  dispatch: store.dispatch,
  createFirestoreInstance
};

ReactDOM.render(
  <React.StrictMode>
    <Provider store={store}><App />
    <ReactReduxFirebaseProvider{...rrfProps}>
      </ReactReduxFirebaseProvider>
      </Provider>
  </React.StrictMode>,
  document.getElementById('root')
);

serviceWorker.unregister();

这是我的 dashboard.js 导出添加时出现的错误

export default compose(
    connect(mapStateToProps),
    firestoreConnect([
        {collection: 'projects'}
    ])
)(Dashboard)

【问题讨论】:

  • 你能在商店创建后尝试断点吗?可能在 rrfProps 对象声明部分,看看 store 是否未定义?
  • 在商店创建前后尝试调试没有新的错误只是上面列出的这个。
  • is 应该在 ReactReduxFirebaseProvider 内?另外,您可以使用可选链编写 store?.dispatch 以避免抛出 TypeError。
  • 我刚刚修复了它,通过将 ``` ``` 放入 ReactReduxProvider 一切正常

标签: javascript reactjs firebase redux


【解决方案1】:

我刚刚在 Kevin Moe Myint Myat 的帮助下将&lt;App/&gt; 放入ReactReduxFirebaseProvider 中,如下所示

ReactDOM.render(
  <React.StrictMode>
    <Provider store={store}>
    <ReactReduxFirebaseProvider{...rrfProps}>
        <App />
      </ReactReduxFirebaseProvider>
      </Provider>
  </React.StrictMode>,
  document.getElementById('root')
);

serviceWorker.unregister();

【讨论】:

  • 感谢您给予我的信任。很高兴帮助开发人员。如果您不介意,可以帮助支持我给您答案的评论吗?这里需要一些声望点。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-29
  • 2018-03-27
  • 2022-01-12
  • 2021-12-04
  • 2021-12-17
  • 2022-01-09
  • 1970-01-01
相关资源
最近更新 更多