Remirror表情弹窗:如何替换SVG为Unicode表情?
排查Remirror EmojiExtension替换CDN SVG为svgmoji Unicode表情的方向
- 检查EmojiExtension的弹窗渲染组件:Remirror的EmojiExtension默认会渲染表情弹窗的列表项,大概率是用
<img>标签加载CDN SVG。你可以自定义弹窗的表情项组件,直接使用svgmoji提供的Unicode字符渲染,替代外部资源请求逻辑。 - 重写Moji类的核心逻辑:你提到修改Moji类只能改URL,那可以尝试重写它的核心方法——比如新增返回Unicode字符的方法,或者直接修改
getUrl的逻辑,让它返回对应emoji的Unicode值,而非SVG地址,再让渲染逻辑读取这个值替代img的src。 - 追踪useEmoji钩子的列表数据流转:setIndex触发请求说明弹窗渲染和状态绑定,检查useEmoji返回的表情列表数据结构,看是否每个item都携带了URL字段。可以在钩子内部或数据传递到弹窗前,将URL替换为svgmoji对应的Unicode字符。
- 查看EmojiExtension的初始化配置项:翻查EmojiExtension的源码或类型定义,看是否支持传入自定义表情数据源(比如包含Unicode的数组),或者提供了自定义渲染器的配置参数,直接替换默认的CDN SVG加载逻辑。
- 用DOM断点定位请求触发源头:在浏览器DevTools中给img元素的
src属性设置DOM断点,当属性变化时触发断点,顺着调用栈找到设置src的代码位置,就能定位到实际发起请求的逻辑。 - 自定义表情选择器逻辑:如果默认逻辑难以修改,完全可以绕开Remirror的默认弹窗,自己实现冒号触发的表情选择器,基于svgmoji的数据源生成选项,选中后直接插入Unicode字符到编辑器,彻底掌控渲染流程。
内容的提问来源于stack exchange,提问作者Rastefan
相关产品推荐
相关产品推荐

