调用`useFirestoreConnect`时对象不是函数

IT技术 reactjs firebase redux google-cloud-firestore react-redux-firebase
2022-07-12 02:00:34

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

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

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

console.log 错误

返回的类型错误

1个回答

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

  1. react-redux-firebase并且redux-firestore在版本兼容性方面存在一些问题,所以跳过我安装了最新版本的软件包!

  2. 很明显,旧版本和新版本在为您的应用程序提供redux firebase provider. 旧方式可能如下所示:

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

但是如果你想在你的应用程序中实现钩子并使用useFirestoreConnectthis 将不起作用。在新版本中,您需要从func 中删除reactReduxFirebaseand ,而是使用导入的 from并将您的应用程序包装在其中,如下所示:reduxFirestorecreateStoreReactReduxFirebaseProviderreact-redux-firebase

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

并传递props: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
};