调用 useFirestoreConnect 时对象不是函数

object is not a function when calling `useFirestoreConnect`

我正在使用 react-redux-firebaseredux-firestore 包。 我正在尝试使用 useFirestoreConnect 挂钩将 firestore 连接到 redux,但在调用此挂钩后,它会给我一个 TypeError,就像这张照片中一样。 我在 GitHub 问题、文档和此处进行了搜索,但没有找到任何解决方案。

错误:Uncaught (in promise) TypeError: Object(...) is not a function

您在这张图片中看到了整个错误:

The console.log error

The TypeError returned

大家好,我知道问题出在哪里了。 这适用于正在寻找解决方案的任何人。

  1. react-redux-firebaseredux-firestore 有一些问题 在版本兼容性方面,所以跳过我安装的最新版本 包的版本!

  2. 显然新旧版本之间存在一些差异 给您的应用程序 redux firebase provider。 旧方法可能如下所示:

    const store = createStore(
    rootReducer,
    composeEnhancers(
    reactReduxFirebase(firebase, rrfConfig),
    reduxFirestore(firebase),
    applyMiddleware(thunk.withExtraArgument({ getFirebase, getFirestore }))
    )
    );
    

但是如果你想在你的应用程序中实现挂钩并使用 useFirestoreConnect 这将不起作用。 在新版本中,您需要从 createStore 函数中删除 reactReduxFirebasereduxFirestore,而是使用从 react-redux-firebase 导入的 ReactReduxFirebaseProvider 并将您的应用包装在其中,像这样:

<ReduxProvider store={store}>
   <ReactReduxFirebaseProvider {...rrfProps}>
     <BrowserRouter>
       <AuthIsLoaded>
         <App />
       </AuthIsLoaded>
     </BrowserRouter>
   </ReactReduxFirebaseProvider>
</ReduxProvider>

并传递了道具:firebase、react-redux-firebase 配置和任何其他你想要的东西。 rrfProps 是这样的:

const rrfProps = {
firebase,
config: rrfConfig,
dispatch: store.dispatch,
createFirestoreInstance, //since we are using Firestore
};

这是 react-redux-firebase 配置 (rrfConfig):

const rrfConfig = {
  userProfile: "users",
  useFirestoreForProfile: true, // Firestore for Profile instead of Realtime DB
  attachAuthIsReady: true, // attaches auth is ready promise to store
};