如何使用代码镜像中的数据对象更改值
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 实例,这不是更好的解决方案。所以如果有人可以改进这个答案,请告诉我
我将 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 实例,这不是更好的解决方案。所以如果有人可以改进这个答案,请告诉我