You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Chakra UI的useDisclosure时出现构造函数调用错误求助

解决Uncaught TypeError: class constructors must be invoked with 'new'(关联useDisclosure)

错误栈虽然指向useDisclosure.ts的onOpen方法,但实际问题和Chakra UI的useDisclosure无关,根源出在emoji-mart组件的使用方式上。

问题原因

emoji-mart v5+版本将React专用组件拆分到了@emoji-mart/react独立包中,你当前导入的emoji-mart包中的Picker是原生JavaScript类组件,并非适配React的封装版本,直接在React函数组件中使用会触发构造函数调用错误。

修复步骤

  1. 卸载旧的emoji-mart包:
npm uninstall emoji-mart
# 或使用yarn
yarn remove emoji-mart
  1. 安装React适配版的emoji组件包:
npm install @emoji-mart/react @emoji-mart/data
# 或使用yarn
yarn add @emoji-mart/react @emoji-mart/data
  1. 修改代码中的导入语句:
    将原导入代码:
import { Picker } from 'emoji-mart';
import data from '@emoji-mart/data';

替换为:

import Picker from '@emoji-mart/react';
import data from '@emoji-mart/data';
  1. 保留原有Picker组件的使用逻辑,handleEmojiSelect函数无需修改。

额外检查项

如果修复后仍有问题,可验证以下内容:

  • 确保React版本≥16.8(支持Hooks特性)
  • 确认所有依赖包为最新稳定版,避免版本冲突

内容的提问来源于stack exchange,提问作者Andrel Daga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 13:57:47