我在Reaction应用程序中初始化CometChat时遇到了一个问题.

我得到的错误是:

Error: Cannot find name 'setCometChat'. Did you mean 'CometChat'?
'CometChat' is declared here.

我给初始化打了useEffect分:

useEffect(() => {
  initCometChat();
  // ...
}, []);

下面是initCometChat的函数:

const initCometChat = async () => {
  const { CometChat } = await import('@cometchat-pro/cordova-ionic-chat');
  const appID = `${process.env.REACT_APP_COMETCHAT_APP_ID}`;
  const region = `${process.env.REACT_APP_COMETCHAT_REGION}`;
  const appSetting = new CometChat.AppSettingsBuilder().subscribePresenceForAllUsers().setRegion(region).build();
  CometChat.init(appID, appSetting).then(
    () => {
      console.log('CometChat was initialized successfully');
      setCometChat(() => CometChat);
    },
    error => {
    }
  );
};

我try 按如下方式使用传入的setter函数:

setCometChat(CometChat);

但这并不管用.

推荐答案

不熟悉Ionic,但如果我没有记错的话,您正在try 将当前的CometChat实例设置为您一直用来初始化一个的变量CometChat.我认为发生该错误是因为CometChat尚未被初始化为使用useState()钩子的状态.

但在这种情况下,将CometChat状态设置为用于初始化的变量CometChat应该不起作用.也许可以试着把你正在初始化的那个和CometChat本身分开.我的意思是这样的:

import React, { useState, useEffect } from 'react';

function Component() {
  const [cometChatInitialized, setCometChatInitialized] = useState(null);

  const initCometChat = async () => {
    const { CometChat } = await import('@cometchat-pro/cordova-ionic-chat');
    // ...

    CometChat.init(appID, appSetting).then(
      () => {
        console.log('CometChat was initialized successfully');
        setCometChatInitialized(CometChat);
      },
      // ...
    );
  };
}

Reactjs相关问答推荐

在react中向数组状态添加值时出错

滚动事件监听器在Next.js客户端组件中不触发

在react.js的条形图中获取错误&unfined是不可迭代的

React Router:在没有手动页面刷新的情况下,路由不会更新内容

根据处于react 状态的数组的名称键,将新对象添加到嵌套的对象数组中

有没有比;KeyableShell;组成部分

如何清除过滤器搜索的状态

在按钮单击中将动态参数传递给 React Query

虽然通过了身份认证,但并没有导航到请求的页面

React v6 中的公共和私有路由

意外的标记.您可能需要一个合适的加载器来处理这种文件类型.书?.img? /*#__PURE__*/React.createElement("img",

我正在try 使用 cypress 测试我的下拉列表,它 Select 值但不提交它们(手动工作)

list 组件未按预期运行

map 未显示在react 传单中

使用 React.UseEffect 从 api 获取但我的清理返回不起作用

如何从其他组件访问 useQuery refetch 方法?

如何制作基于对象 struct 呈现数据的可重用组件?

当状态改变时如何执行一些动作,但只针对第一次更新?

使用 React、Redux 和 Firebase 的无限循环

我可以在类组件中使用 useState 挂钩吗?