如何防止 Vuex 干扰我的类实例



我正在尝试在Vuex(ProseMirror的EditorState(中存储一个类的实例。这个类从外部或多或少是不可变的,这意味着每当我想对它进行更改时,我都会将该类的新实例放入 Vuex 中。

因此,我在这里不需要 Vue 的更改跟踪,事实上它实际上似乎干扰了 ProseMirror 的内部工作,所以我想知道是否有一种方法可以将我的对象与 Vue 隔离开来,以便对其进行原子处理。

我通过从这个问题的最高答案中获取建议并在将其提供给 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 尝试修改对象。

相关内容

  • 没有找到相关文章

最新更新