Vue 组件 Emits 怎么处理富文本内容改变的事件派发

阿敏酱_8375

阿敏酱_8375

2026-10-18

307人浏览

原创

vue富文本组件需显式声明emits: ['update:modelvalue']并监听@input/@blur+@keyup事件触发emit,配合v-model实现受控绑定,确保父组件可靠接收html内容且防xss、空内容。

vue 组件 emits 怎么处理富文本内容改变的事件派发

Vue 组件中处理富文本内容变化的事件派发,核心是结合 contenteditable 元素与 emits 显式声明更新事件,确保父组件能可靠接收最新 HTML 内容。关键不在“能不能发”,而在“怎么发得清晰、可控、可维护”。

明确声明 update:modelValue 事件

富文本组件通常作为受控组件使用,需支持 v-model 双向绑定。这要求子组件必须在 emits 中声明 update:modelValue,否则该事件会被视为“未声明事件”,触发 Vue 3 的透传机制——可能意外绑定到根元素上,造成重复触发或监听失效。

  • 用数组形式声明最常用: emits: ['update:modelValue']
  • 若需校验参数(比如只允许字符串),可用对象形式:
    emits: { 'update:modelValue': (value) => typeof value === 'string' }
  • 搭配 defineEmits(组合式 API)更类型安全:
    const emit = defineEmits(['update:modelValue'])

监听 contenteditable 的输入并触发 emit

不能依赖 @change(它对 contenteditable 不生效),应监听 @input 或更稳妥的 @blur + @keyup 组合,避免频繁触发影响性能。

vue-composition-api-best-practices
vue-composition-api-best-practices

Vue 3 组合式 API 与

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 17.1万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习

Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.7万人学习