ProseMirror在Vue组件中初始化时内容不显示怎么办?
我在Vue组件里用ProseMirror写富文本编辑器,初始化的时候传了content属性但内容始终不显示出来,这是为什么呢?
代码是这样写的:
import { EditorState, EditorView } from 'prosemirror-state';
import { schema } from 'prosemirror-schema-basic';
export default {
props: ['content'],
data() {
return {
editor: null
};
},
mounted() {
const state = EditorState.create({ schema, doc: this.content });
this.editor = new EditorView(this.$refs.editor, { state });
}
}
我尝试过在mounted里直接打印this.content能看到正确的初始值,但编辑器里就是空白。换成静态字符串写死就能显示,动态传值就不行了…
this.content虽然在mounted里能打印出来,但它的数据类型可能不符合 ProseMirror 的要求。ProseMirror 的doc需要的是一个具体的 Schema 节点结构,而不是纯文本或 HTML 字符串。解决办法就是在初始化之前,先把
this.content转换成符合 Schema 的节点。可以这样改:重点就是用
DOMParser把内容解析成正确的节点结构。WP里面如果对接富文本编辑器,这种转换也是常见的操作。记得检查this.content的格式是不是合法的 HTML,不然也可能会有问题。另外提醒一下,如果内容是异步加载的,可能还需要加个判断,确保数据准备好后再初始化编辑器。