无法调用reactReduxFirebase() - TypeError:对象不是函数

2023-12-28

我正在使用redux-thunk作为中间件并尝试连接到redux-firestore。当我运行该应用程序时,我收到错误“类型错误:对象(...)不是一个函数” at createStore.

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

我在 thunk 操作中使用额外的参数,如下所示:

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

您看到的错误可能是由于升级造成的react-redux-firebase 从 v2 到 v3 http://react-redux-firebase.com/docs/v3-migration-guide.html(或基于过时的示例创建新代码)。此更新引入了一些重大更改,例如删除了reactReduxFirebase存储增强子功能。该包现在使用 React 上下文并引入了一些新的钩子,例如useFirebase and useFirestore它允许您通过函数组件中的上下文访问 firebase。但这对你的重击没有帮助。

在页面上Redux Thunk 集成 http://react-redux-firebase.com/docs/integrations/thunks.html,他们建议通过getFirebase函数到withExtraArgument.

thunk.withExtraArgument(getFirebase)

至于访问 firestore,这个 GitHub 讨论 https://github.com/prescottprue/react-redux-firebase/issues/785建议通过以下方式访问它getFirebase功能。

getFirebase().firestore()

您希望额外的参数是具有属性的对象getFirebase and getFirestore。我们用getFirebase作为一个属性并为getFirestore财产。

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(),
    })
  )
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法调用reactReduxFirebase() - TypeError:对象不是函数 的相关文章

随机推荐

  • 将意图从服务发送到活动

    我正在尝试返回结果IntentSerivce to the mainactivity使用意图 但我无法让它发挥作用 这IntentService毫无问题地从活动中接收意图 执行它的操作并获得JSONstring 现在剩下的唯一问题是将这个字
  • 修改 servlet 上下文初始化参数() 值

    我正在经历一个 Web 开发过程 其中有两个参数 即用户名和密码作为 web xml 文件中的上下文参数 例如
  • jqgrid 删除时出现错误消息

    我为我的 jqgrid 添加了以下代码 changeTextFormat function data return Activity or one from the same price group already used jQuery
  • java.net.BindException:绑定失败:EADDRINUSE(地址已在使用中)

    我有一个服务 它启动线程在套接字上执行一些操作 代码如下 public class ServerRunnable implements Runnable Override public void run ServerSocket serve
  • 联合仅选择一行

    我有一个带有两个 Select 子句与 UNION 组合的查询 我只想选择顶部第一行 我该如何使用 Union 来做到这一点 Select Fault OccurredOn From ATMStatus Where Ticket 18970
  • 如何在weblogic中远程部署应用程序?

    我有两台计算机 我不想在我的开发计算机上安装weblogic和oracle 它们消耗太多内存 问题是我如何将开发计算机上的应用程序部署到另一台安装了oracle和weblogic的空闲计算机上 我使用的是weblogic 10 3 我不想在
  • Ionic2/Angular2 - 读取自定义配置文件

    我正在开发 ionic2 项目 需要创建一个新的自定义 JSON 配置文件 我找到了一些教程来创建一个并通过 http get 访问它 但我认为通过 get 请求调用它很奇怪 我希望它位于根文件夹 所有配置 JSON 都在其中 然后我直接打
  • jQuery 电子邮件验证要求

    我使用 jQuery Validation 插件进行客户端验证 除其他外 我还验证电子邮件地址 现在我还想在服务器端进行验证 对于没有 javascript 等的用户 由于缺乏更好的想法 我开始使用正则表达式 但很快我意识到我想要重要的是使
  • SVG 画一个有 4 个扇形的圆

    我需要画一个有 4 个扇形的圆 我正在尝试绘制这样的扇区
  • WinSock recv()超时:setsockopt()-设置值+半秒?

    我正在编写一个跨平台库 除其他外 它提供了一个套接字接口 在运行我的单元测试套件时 我注意到通过设置超时有一些奇怪的事情setsockopt 在 Windows 上 阻塞recv 调用似乎始终比通过指定的时间晚大约半秒 500 毫秒 返回S
  • 有人对在 Rails 3 中管理多态嵌套资源有什么建议吗?

    在config routes rb中 resources posts do resources comments end resources pictures do resources comments end 我也希望允许对更多事情进行评
  • ReSharper 换行和换行

    所以这 cmd new OdbcCommand string Format SELECT FROM Bobby Tables WHERE Name 0 Little Bobby Drop Tables odbcConnection 被格式化
  • 如何在显示 Inno Select 语言对话框之前执行代码

    我需要在显示 选择安装语言 对话框之前执行 pascal 代码 不幸的是初始化设置事件在之后执行 function InitializeSetup Boolean This event occurs to late begin DoSome
  • 如何在 .NET 中生成进程并捕获其 STDOUT? [复制]

    这个问题在这里已经有答案了 我需要生成一个作为控制台应用程序的子进程 并捕获其输出 我为一个方法编写了以下代码 string retMessage String Empty ProcessStartInfo startInfo new Pr
  • 擅长 C++ 的项目想法 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动
  • 如何在 Visual Studio 中设置默认的双击操作?

    当您双击 Visual Studio 时 如何使 Visual Studio 默认为 查看源代码 Form1 cs 与视图设计器相比 我更喜欢将 查看源代码 设置为双击的默认值 在解决方案资源管理器中右键单击该文件 选择 打开方式 选择 C
  • 将 Python 列表转换为 CSV 中的列

    我有一个值列表 v1 v2 v3 我想将它们写入 csv 中名为 VALUES 的列 我正在使用 csvreader 和 csvwriter 来达到我的目的 我只知道如何使用 csvwriter writerow 将它们写入行 听起来你已经
  • Java正则表达式边界匹配?

    我在一个 Java 测试套件中发现了以下问题 Pattern p Pattern compile wow Matcher m p matcher wow its cool boolean b false while b m find Sys
  • 删除不包含数字的列名称

    我有一个具有以下列名称的 df Name Id xyz ijk 1 2 3 val1 val2 我想删除所有名称不包含数字的列 只保留Name and Id 有没有有效的方法来做到这一点 结果将是 名称 ID 1 2 3 val1 val2
  • 无法调用reactReduxFirebase() - TypeError:对象不是函数

    我正在使用redux thunk作为中间件并尝试连接到redux firestore 当我运行该应用程序时 我收到错误 类型错误 对象 不是一个函数 at createStore import reportWebVitals from re