富文本编辑器实时预览样式不同步怎么解决?
用Quill和Vue做可视化编辑器时,实时预览区的样式总比编辑区慢半拍,比如刚改了字体颜色,预览区还是旧样式,卡住好几天了。
尝试过用quill.on('text-change')实时同步内容,但内联样式比如style="color:red"没及时更新,动态组件间的样式还会互相污染。
// 编辑器配置
const quill = new Quill('#editor', {
theme: 'snow',
modules: { clipboard: { matchVisual: false } }
})
预览区用了v-html渲染,但动态添加的class在预览区完全失效,控制台没报错但就是不更新…
quill.getContents()同步内容,别用v-html,改用v-dompurify-html渲染预览,内联样式问题就解决了。模板部分:
关键点:
1. 不要直接用
v-html同步,需要通过清空再赋值的方式强制刷新2. 内联样式和动态类名会滞后?改一下就行,用上面的方法确保每次都是全新的 HTML
3. 样式污染?给预览区加个独立的
class="preview",然后写专属样式就完事了就这么简单,别被表面现象吓到。