首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能调用reactReduxFirebase() - TypeError: Object不是函数

不能调用reactReduxFirebase() - TypeError: Object不是函数
EN

Stack Overflow用户
提问于 2021-03-08 20:12:57
回答 1查看 163关注 0票数 0

我使用redux-thunk作为中间件,并试图连接到redux-firestore。当我运行应用程序时,我得到的是错误"TypeError: Object(.)不是createStore上的“。

代码语言:javascript
复制
import reportWebVitals from './reportWebVitals';
import {createStore,applyMiddleware,compose} from 'redux';
import rootReducer from './store/reducers/rootReducer';
import {Provider} from 'react-redux';
import thunk from 'redux-thunk'
import {reduxFirestore, getFirestore} from 'redux-firestore'
import {reactReduxFirebase, getFirebase} from 'react-redux-firebase'
import FBConfig from './Config/FBConfig'

const store = createStore(rootReducer,
  compose(applyMiddleware(thunk.withExtraArgument({getFirestore,getFirebase})),
    reduxFirestore(FBConfig),
    reactReduxFirebase(FBConfig)
  )
);

在这样的动作中,我使用了额外的参数:

代码语言:javascript
复制
export const createProject=(project)=>{
      return(dispatch,getState,{getFirebase,getFirestore})=>{
            //asyn call to database
            const firestore=getFirestore();
            firestore.collection('projects').add({
                  ...project,
                  authorFirstName:'Nam',
                  authorLastName:'Pam',
                  authorId:123,
                  createAt: new Date()
            }).then(()=>{
                  dispatch({type:'CREATE_PROJECT',project});
                  
            }).catch((err)=>{
                  dispatch({type:'CREATE_PROJECT_ERROR',err})
            })  
      }
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-08 21:10:23

您所看到的错误可能是由于升级了react-redux-firebase 从v2到v3 (或者根据过时的示例编写新代码)。此更新引入了一些突破性的更改,例如删除了reactReduxFirebase存储增强器功能。这个包现在使用了function上下文,并引入了一些新的钩子,比如useFirebaseuseFirestore,它们允许您通过函数组件中的上下文访问防火墙。但这对你的扣篮没什么帮助。

Redux Thunk集成上的页面中,他们建议将getFirebase函数传递给withExtraArgument

代码语言:javascript
复制
thunk.withExtraArgument(getFirebase)

至于访问防火墙,这个GitHub的讨论建议通过getFirebase函数访问它。

代码语言:javascript
复制
getFirebase().firestore()

您希望额外的参数是一个具有属性getFirebasegetFirestore的对象。我们使用getFirebase作为一个属性,并为getFirestore属性创建内联箭头函数。

代码语言:javascript
复制
import {createStore,applyMiddleware, AnyAction} from 'redux';
import thunk from 'redux-thunk';
import {getFirebase} from 'react-redux-firebase';

const store = createStore(
  rootReducer,
  applyMiddleware(
    thunk.withExtraArgument({
      getFirebase,
      getFirestore: () => getFirebase().firestore(),
    })
  )
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66536513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档