这里考虑采用 monaco-editor 设定支持代码编辑 / 对比等功能
React JSON View
Resize
需要监听 resize 事件将编辑器实时变化大小
function resizeHandler() {
if (monacoInstance) {
monacoInstance.layout();
}
}
window.addEventListener('resize', resizeHandler);
折叠
function toggleFold() {
if (monacoInstance.folded) {
monacoInstance.getAction('editor.unfoldAll').run();
monacoInstance.focus();
} else {
monacoInstance.getAction('editor.foldAll').run().then(function () {
monacoInstance.setSelection(new monaco.Range(1, 1, 1, 1));
monacoInstance.focus();
monacoInstance.getAction('editor.unfold').run();
});
}
monacoInstance.setScrollTop(0);
monacoInstance.folded = !monacoInstance.folded;
}