【问题标题】:How to change the value using data object in code mirror如何使用代码镜像中的数据对象更改值
【发布时间】:2021-07-18 14:37:03
【问题描述】:
我将 react-codemirror2 用于在线代码编辑器类型的项目。我想实现自己的实时协作平台。在 quill js 中,我们可以使用 delta 对象来执行此操作。在代码镜像中,我们可以从 onBeforeChange 事件处理程序中获取“数据”对象。有什么方法可以使用像 delta 对象这样的数据对象? (隐瞒编辑的价值,反之亦然)
【问题讨论】:
标签:
javascript
reactjs
codemirror
react-codemirror2
【解决方案1】:
我终于找到了一种方法来做到这一点。我必须使用另一个单独的 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 实例,因此这不是一个更好的解决方案。所以如果有人可以改进这个答案,请告诉我