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

Vue3中使用VueQuill渲染HTML字符串时出现emit未定义错误

解决VueQuill渲染HTML时的"Cannot read properties of undefined (reading 'emit')"错误

问题根源

你遇到的错误是因为绑定的data不是响应式变量,VueQuill在contentType="html"模式下,内部依赖响应式数据的变更来触发emit逻辑。非响应式变量会导致组件初始化时无法正确获取到emit的上下文,而contentType="text"模式的内部处理逻辑不依赖这个环节,所以没有报错。

解决方案

1. 将数据改为响应式变量

使用Vue3的ref将data声明为响应式变量,这是最直接的修复方式:

<template>
  <div class="">
      <QuillEditor v-model:content="data" contentType="html" />
  </div>
</template>

<script>
import { QuillEditor } from '@vueup/vue-quill'
import '@vueup/vue-quill/dist/vue-quill.snow.css';
import { ref } from 'vue'

export default {
  name: 'HomeView',
  components: {
    QuillEditor
  },
  setup(){
    // 用ref包裹HTML字符串,转为响应式数据
    const data = ref("<div><p>test test test</p></div>")

    return {
      data
    }
  }
}
</script>

2. 延迟初始化HTML内容(可选)

如果上述方法仍有问题,可以尝试在组件挂载后再赋值HTML内容,确保组件内部实例已完全创建:

<template>
  <div class="">
      <QuillEditor v-model:content="data" contentType="html" />
  </div>
</template>

<script>
import { QuillEditor } from '@vueup/vue-quill'
import '@vueup/vue-quill/dist/vue-quill.snow.css';
import { ref, onMounted } from 'vue'

export default {
  name: 'HomeView',
  components: {
    QuillEditor
  },
  setup(){
    const data = ref("")

    onMounted(() => {
      // 组件挂载后再赋值HTML
      data.value = "<div><p>test test test</p></div>"
    })

    return {
      data
    }
  }
}
</script>

验证

修改后重新运行项目,contentType="html"模式下的渲染应该正常,控制台不会再出现emit相关的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:15:41