【问题标题】:object is not a function when calling `useFirestoreConnect`调用`useFirestoreConnect`时对象不是函数
【发布时间】:2020-10-08 14:06:22
【问题描述】:

我正在使用 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

【问题讨论】:

  • 请将错误文本粘贴到您的问题中,以便其他人可以更轻松地帮助您。
  • 我已经分享了整个错误的图片,但是我添加了文字!
  • 很好,错误的文本有帮助,但现在我们需要查看产生此错误的代码,以便有人可以帮助您调试。
  • 调用从react-redux-firebase导入的useFirestoreConnect时出错。像这样:useFirestoreConnect(["products"])
  • json对象的元素多吗?我问你这个是因为在你分享的图片中,最后一个元素是“doc:userId”,它有一个逗号,如果是最后一个元素,逗号应该去掉,你能分享更多代码吗?

标签: reactjs firebase redux google-cloud-firestore react-redux-firebase


【解决方案1】:

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

  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
};

【讨论】:

    猜你喜欢
    • 2017-01-24
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 2018-03-13
    • 2012-05-28
    • 2020-09-11
    • 2021-12-15
    相关资源
    最近更新 更多