具有 ReactJS 的 Ace 编辑器 - 撤消功能
Ace editor with ReactJS - undo functionality
我正在使用 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>
);
}
}
我错过了什么,有什么解决方法吗?
发生这种情况是因为在处理 value={code}
之前调用了 onload,一个 hacky 解决方法是:
onLoad={editor => {
editor.once("change", function() {
editor.session.getUndoManager().reset();
});
}}
我正在使用 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>
);
}
}
我错过了什么,有什么解决方法吗?
发生这种情况是因为在处理 value={code}
之前调用了 onload,一个 hacky 解决方法是:
onLoad={editor => {
editor.once("change", function() {
editor.session.getUndoManager().reset();
});
}}