在 ReactJS 中使用 AceEditor 知道光标在文本中的位置
Know where the cursor is in the text using AceEditor in ReactJS
我正在创建一个代码编辑器,现在我想知道光标在 Ace 编辑器文本中的位置。
这是代码编辑器组件的代码:
import React, {Component} from 'react';
import AceEditor from 'react-ace';
import 'brace/mode/javascript';
import 'brace/theme/monokai';
import 'brace/ext/language_tools';
class EditorCodeEditor extends Component {
onChange = e => {
// Here I want show for console the position of cursor
Something like this? -> console.log(this.refs.ace.editor.focus);
};
render() {
return (
<div>
<AceEditor
mode="javascript"
theme="monokai"
name="blah2"
onChange={this.onChange}
fontSize={14}
showPrintMargin={true}
showGutter={true}
highlightActiveLine={true}
value="I AM AN EDITOR"
ref='ace'
focus={true}
cursorStart={1}
editorProps={{$blockScrolling: true}}
style={{width: '100%', height: '400px'}}
setOptions={{
enableBasicAutocompletion: false,
enableLiveAutocompletion: true,
enableSnippets: true,
showLineNumbers: true,
tabSize: 2
}} />
</div>
);
}
}
export default EditorCodeEditor;
The problem is when I use ref='ace' in AceEditor label, it returns the
error: Using string literals in ref attributes is deprecated.
(react/no-string-refs) and the same with this.refs into onChange function.
有什么想法吗?感谢您的帮助。
ref 属性指的是 DOM 节点。并且可以通过以下代码访问:
ref={c => { this.ace = c; }}
为了获取光标的位置,AceEditor 有一个 onCursorChange 属性,您可以使用它。
onCursorChange(selection) {
const cursorPosition = selection.getCursor();
}
我正在创建一个代码编辑器,现在我想知道光标在 Ace 编辑器文本中的位置。
这是代码编辑器组件的代码:
import React, {Component} from 'react';
import AceEditor from 'react-ace';
import 'brace/mode/javascript';
import 'brace/theme/monokai';
import 'brace/ext/language_tools';
class EditorCodeEditor extends Component {
onChange = e => {
// Here I want show for console the position of cursor
Something like this? -> console.log(this.refs.ace.editor.focus);
};
render() {
return (
<div>
<AceEditor
mode="javascript"
theme="monokai"
name="blah2"
onChange={this.onChange}
fontSize={14}
showPrintMargin={true}
showGutter={true}
highlightActiveLine={true}
value="I AM AN EDITOR"
ref='ace'
focus={true}
cursorStart={1}
editorProps={{$blockScrolling: true}}
style={{width: '100%', height: '400px'}}
setOptions={{
enableBasicAutocompletion: false,
enableLiveAutocompletion: true,
enableSnippets: true,
showLineNumbers: true,
tabSize: 2
}} />
</div>
);
}
}
export default EditorCodeEditor;
The problem is when I use ref='ace' in AceEditor label, it returns the error: Using string literals in ref attributes is deprecated. (react/no-string-refs) and the same with this.refs into onChange function.
有什么想法吗?感谢您的帮助。
ref 属性指的是 DOM 节点。并且可以通过以下代码访问:
ref={c => { this.ace = c; }}
为了获取光标的位置,AceEditor 有一个 onCursorChange 属性,您可以使用它。
onCursorChange(selection) {
const cursorPosition = selection.getCursor();
}