объект не является функцией при вызове useFirestoreConnect - PullRequest
1 голос
/ 18 июня 2020

Я использую пакеты react-redux-firebase и redux-firestore. Я пытаюсь подключить firestore к redux с помощью хука useFirestoreConnect, но после вызова этого хука он дает мне ошибку TypeError, как на этом рисунке. Я искал проблемы GitHub, документы и здесь, но я нашел любое решение.

Ошибка: Uncaught (in promise) TypeError: Object(...) is not a function

вы видите всю ошибку на этом изображении:

Ошибка console.log

Возвращено TypeError

1 Ответ

1 голос
/ 23 июня 2020

Привет, ребята, я понял, откуда взялась проблема. Это для всех, кто ищет решение.

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

, но если вы хотите реализовать хуки в своем приложении и использовать useFirestoreConnect, это не сработает. В новых версиях вам нужно удалить reactReduxFirebase и reduxFirestore из createStore fun c и вместо этого использовать ReactReduxFirebaseProvider, импортированный из react-redux-firebase, и обернуть приложение внутри него, например:

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

и переданные реквизиты: firebase, response-redux-firebase config и любые другие вещи, которые вам нужны. параметры rrfProps выглядят следующим образом:

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

, и это конфигурация response-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
};
...