代码之家  ›  专栏  ›  技术社区  ›  NelbeDG

使用reactjs中的aceeditor知道光标在文本中的位置

  •  0
  • NelbeDG  · 技术社区  · 6 年前

    我正在创建一个代码编辑器,现在我想知道光标在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;
    

    问题是当我使用 REAC= ACE 在AceEditor标签中,它返回 错误: 在REF属性中使用字符串文字是不推荐的。 (反应/无字符串引用) 和一样 参考文献 进入onchange函数。

    有这个主意吗?谢谢你的帮助。

    1 回复  |  直到 6 年前
        1
  •  1
  •   vijayst    6 年前

    ref prop引用dom节点。可通过以下代码访问:

    ref={c => { this.ace = c; }}
    

    为了获得光标的位置,aceeditor有一个oncursorchange属性,您可以使用它。

    onCursorChange(selection) {
      const cursorPosition = selection.getCursor();
    }