我正在使用 CodeMirror 6 和 @codemirror/merge 包。到目前为止,我已经完成了与 UI 相关的所有工作。但是,我无法弄清楚当用户批准或拒绝代码块时如何触发函数。
这是我的(JS/React)代码:
const editorState = EditorState.create({
doc: modifiedCode,
extensions: [
...extensions,
showMergeView ? unifiedMergeView({ original: originalCode }) : [],
],
});
const view = new EditorView({
state: editorState,
parent: editorRef.current,
});
作为参考,我想运行一个函数来知道何时关闭合并视图。我通过计算
getChunks
返回的块的数量来做到这一点。但是,当用户与合并控制按钮交互时,我一生都无法弄清楚如何运行功能。
在 discuss.codemirror.net 上发布后,我能够想出以下监听接受/恢复消息的片段:
const editorState = EditorState.create({
doc: "// my code",
extensions: [
...extensions,
EditorView.updateListener.of((update) => {
if (update.transactions) {
update.transactions.forEach((tr) => {
if (tr.isUserEvent("accept")) {
// handle accept
} else if (tr.isUserEvent("revert")) {
// handle revert
}
});
}
}),
],
});