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

React添加表情按钮出现undefined错误?emoji-picker-react新版本适配求助

解决方案与替代组件推荐

修复当前emoji-picker-react的undefined错误

新版本的emoji-picker-react对onEmojiClick回调的参数结构做了变更,不再采用(event, emojiObject)的双参数形式,而是传入一个包含表情数据和原生事件的单对象参数。修改你的回调函数即可解决问题:

import './App.scss';
import React, { useState } from 'react'
import 'bootstrap/dist/css/bootstrap.min.css';
import Picker from 'emoji-picker-react';

function App() {
    const [chosenEmoji, setChosenEmoji] = useState(null);

    // 适配新版本的回调写法
    const onEmojiClick = (emojiClickData) => {
      setChosenEmoji(emojiClickData.emoji);
      console.log(emojiClickData.emoji);
    };
  
    return (
      <div className="App">
        <header className="App-header">
          {chosenEmoji ? (
            <span>You chose: {chosenEmoji.emoji}</span>
          ) : (
            <span>No emoji Chosen</span>
          )}
          <Picker onEmojiClick={onEmojiClick} />
        </header>
      </div>
    );
}

export default App;

如果需要获取点击事件的原生对象,可以通过emojiClickData.nativeEvent访问。

替代表情组件推荐

如果不想适配新版本,或需要更符合需求的样式自定义能力,可选择以下组件:

  • emoji-mart:成熟的表情选择器,支持自定义主题、布局尺寸,样式可通过CSS深度定制,文档全面。使用示例:
    import { Picker } from 'emoji-mart';
    import 'emoji-mart/css/emoji-mart.css';
    
    // 组件内调用
    <Picker onSelect={(emoji) => setChosenEmoji(emoji)} />
    
  • @joeattardi/emoji-picker:轻量级组件,体积小,支持自定义样式类名,适合对包体积有要求的场景。
  • react-emoji-picker:极简风格的选择器,基础功能完善,可通过覆盖默认CSS规则快速调整样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:20:29