Ace редактор с ReactJS - отменить функциональность - PullRequest
2 голосов
/ 05 марта 2020

Я использую редактор Ace с React (https://github.com/securingsincity/react-ace, версия: 8.0.0)

Мне удалось добавить кнопку отмены, но отмена в новом экземпляре редактора Стирание всего документа.

Мой код на данный момент:

class AceEditor extends React.Component {

  constructor(props, context) {
    super(props, context);

    this.editor = React.createRef();
  }

  componentDidMount() {
    this.setState({
      code: "Test text"
    })
  }

  render() {
    const {code} = this.state;

    return (
      <div>
        <Button onClick={() => {
          this.editor.current.editor.undo()
        }}/>

        <AceEditor
          ref={this.editor}
          value={code}
          // more props
          onLoad={editor => {
            const session = editor.getSession();
            const undoManager = session.getUndoManager();
            undoManager.reset();
            session.setUndoManager(undoManager);
          }}
        />
      </div>
    );
  }
}

Чего мне не хватает, любые обходные пути?

1 Ответ

1 голос
/ 07 марта 2020

это происходит потому, что onload вызывается перед обработкой value={code}, хакерский обходной путь:

onLoad={editor => {
    editor.once("change", function() {
        editor.session.getUndoManager().reset();
    });
}}

https://codesandbox.io/s/sharp-kalam-yen89

...