我采纳了上面答案中的建议,解决了这个问题
this question
并在将类实例提交给Vuex之前将其冻结。
const store = new Store<AppState>({
state: {
editor: Object.freeze(editorState), // freeze because Vue reactivity messes it up
filename: null,
metadata: {}
},
mutations: {
updateDocument(context, transaction: Transaction) {
console.log("updateDocument called");
// freeze again
context.editor = Object.freeze(context.editor.apply(transaction));
}
},
strict: process.env.NODE_ENV === "development"
});
自从
Object.freeze
不是递归的,这不会对ProseMirror的内部工作产生任何影响,但会阻止Vue尝试修改对象。