Emoji
Express yourself with a touch of fun 🎉 and emotion 😃.
Pick from the toolbar or type a colon to open the combobox.
1
100%
Files
'use client';
import * as React from 'react';
import { Plate, usePlateEditor } from 'platejs/react';
import { EditorKit } from '@/components/editor/editor-kit';
import { Editor, EditorContainer } from '@/components/ui/editor';
import { DEMO_VALUES } from './values/demo-values';
export default function Demo({ id }: { id: string }) {
const editor = usePlateEditor({
plugins: EditorKit,
value: DEMO_VALUES[id],
});
return (
<Plate editor={editor}>
<EditorContainer variant="demo">
<Editor />
</EditorContainer>
</Plate>
);
}
Emoji insertion via toolbar or colon-triggered combobox.
emoji-demo


功能特性
- 通过自动补全建议内联插入表情符号
- 通过输入
:字符后跟表情名称触发(例如:apple:🍎) - 可自定义的表情数据源和渲染方式
套件使用方式
安装
最快捷的添加表情功能方式是使用EmojiKit,它包含预配置的EmojiPlugin和EmojiInputPlugin以及它们的Plate UI组件。
'use client';
import emojiMartData from '@emoji-mart/data';
import { EmojiInputPlugin, EmojiPlugin } from '@platejs/emoji/react';
import { EmojiInputElement } from '@/components/ui/emoji-node';
export const EmojiKit = [
EmojiPlugin.configure({
options: { data: emojiMartData as any },
}),
EmojiInputPlugin.withComponent(EmojiInputElement),
];
EmojiInputElement: 渲染表情输入组合框
添加套件
import { createPlateEditor } from 'platejs/react';
import { EmojiKit } from '@/components/editor/plugins/emoji-kit';
const editor = createPlateEditor({
plugins: [
// ...其他插件,
...EmojiKit,
],
});手动配置方式
安装
pnpm add @platejs/emoji @emoji-mart/data
添加插件
import { EmojiPlugin, EmojiInputPlugin } from '@platejs/emoji/react';
import { createPlateEditor } from 'platejs/react';
const editor = createPlateEditor({
plugins: [
// ...其他插件,
EmojiPlugin,
EmojiInputPlugin,
],
});配置插件
import { EmojiPlugin, EmojiInputPlugin } from '@platejs/emoji/react';
import { createPlateEditor } from 'platejs/react';
import { EmojiInputElement } from '@/components/ui/emoji-node';
import emojiMartData from '@emoji-mart/data';
const editor = createPlateEditor({
plugins: [
// ...其他插件,
EmojiPlugin.configure({
options: {
data: emojiMartData,
trigger: ':',
triggerPreviousCharPattern: /^\s?$/,
createEmojiNode: (emoji) => ({ text: emoji.skins[0].native }),
},
}),
EmojiInputPlugin.withComponent(EmojiInputElement),
],
});options.data: 来自@emoji-mart/data包的表情数据options.trigger: 触发表情组合框的字符(默认::)options.triggerPreviousCharPattern: 匹配触发字符前一个字符的正则表达式options.createEmojiNode: 选择表情时创建表情节点的函数。默认插入Unicode字符作为文本withComponent: 为表情输入组合框分配UI组件
添加工具栏按钮
您可以在工具栏中添加EmojiToolbarButton来插入表情符号。
插件说明
EmojiPlugin
提供表情功能的核心插件。扩展自TriggerComboboxPluginOptions。
EmojiInputPlugin
处理表情插入的输入行为。