Javascript executeEdits重置我的编辑操作范围

Javascript executeEdits重置我的编辑操作范围,javascript,reactjs,monaco-editor,visual-studio-monaco,Javascript,Reactjs,Monaco Editor,Visual Studio Monaco,我试图在Monaco Editor中对事件进行一些基本的回放,但是,每当我将编辑传递给ExecutedIts,它总是将编辑的范围重置为{StartInNumber:1,startColumn:1,endLineNumber:1,endColumn:1}(这是我在调用executedits后,如果我console.log将消息记录下来就会得到的结果)。实际上,我尝试插入或替换的任何文本都会在第一行的开头结束,并以相反的方式键入文本 摩纳哥为什么要重置我的编辑操作范围?上的文档在范围属性中说明:

我试图在Monaco Editor中对事件进行一些基本的回放,但是,每当我将编辑传递给
ExecutedIts
,它总是将编辑的
范围
重置为
{StartInNumber:1,startColumn:1,endLineNumber:1,endColumn:1}
(这是我在调用
executedits
后,如果我
console.log
将消息记录下来就会得到的结果)。实际上,我尝试插入或替换的任何文本都会在第一行的开头结束,并以相反的方式键入文本

摩纳哥为什么要重置我的编辑操作范围?

上的文档在
范围
属性中说明:

要替换的范围。可以为空以模拟简单插入

因此,您应该能够只传递一个空对象,然后添加编辑操作

但是,说明行号和列从1开始,而不是从0开始。这以及给定范围应描述应替换的文本部分,而不是操作应附加的位置这一事实,导致摩纳哥替换(无效)范围

import * as React from 'react'
import * as monaco from 'monaco-editor'

import { PlayerContext } from './player-context'

const defaultOptions = {
  minimap: {
    enabled: false
  }
}

export default class MonacoEditor extends React.Component {
  static contextType = PlayerContext

  handleMessage = message => {
    this._editor.executeEdits('', [
      { ...message, forceMoveMarkers: true }
    ])
  }

  componentDidMount() {
    const { path, value, language, ...options } = this.props
    const model = monaco.editor.createModel(value, language, path)
    this._editor = monaco.editor.create(this._node, {
      ...defaultOptions,
      ...options
    })
    this._editor.setModel(model)
    this.context.addMessageHandler('didChange', this.handleMessage)
  }

  componentWillUnmount() {
    this._editor && this._editor.dispose()
    this.context.removeMessageHandler('didChange', this.handleMessage)
  }

  render() {
    return <div style={{ height: 500 }} ref={c => (this._node = c)} />
  }
}
{
  range: {
    startLineNumber: 0, 
    startColumn: 47, 
    endLineNumber: 0, 
    endColumn: 47
  },
  text: '!'
}