0

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

4

1 回答 1

0

最后我找到了一种方法来做到这一点。我不得不使用另一个单独的 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 实例,因此这不是一个更好的解决方案。所以如果有人可以改进这个答案,请告诉我

于 2021-07-19T14:57:13.690 回答