如何使用代码镜像中的数据对象更改值

How to change the value using data object in code mirror

我将 react-codemirror2 用于在线代码编辑器类项目。我想实现自己的实时协作平台。在 quill js 中,我们可以使用 delta 对象来做到这一点。在代码镜像中,我们可以从 onBeforeChange 事件处理程序中获取 'data' 对象。有没有办法像增量对象一样使用该数据对象? (隐藏到编辑器的值,反之亦然)

最后我找到了一个方法来做到这一点。我不得不使用另一个单独的 codemirror 实例来获得它。

const mirror = cm(function () { }, {});
const mirrorChange = (editor, deferred) => {
    var doc = editor.getDoc();

    if (deferred.origin === 'undo') {
        doc.setHistory(mirror.getHistory());
        mirror.undo();
    } else if (deferred.origin === 'redo') {
        doc.setHistory(mirror.getHistory());
        mirror.redo();
    } else {
        mirror.replaceRange(deferred.text, deferred.from, deferred.to, deferred.origin);
    }

    return mirror.getValue();
}

这里我可以在 onBeforeChange 处理程序中使用这个函数。由于我正在维护另一个 codemirror 实例,这不是更好的解决方案。所以如果有人可以改进这个答案,请告诉我