React使用AceEditor实现自定义代码提示

一、安装依赖       

        首先,需要引入需要的依赖

yarn add react-ace ace-builds

        我安装的版本是"react-ace": "^10.0.0",   "ace-builds": "^1.4.14"     

二、引入依赖

        在页面上引入一些内容

// 核心组件
import AceEditor from 'react-ace'
// 引入对应的语言
import 'ace-builds/src-noconflict/mode-javascript'
//以下import的是风格
import 'ace-builds/src-noconflict/theme-eclipse'
// 代码提示
import 'ace-builds/src-noconflict/ext-language_tools'
import 'ace-builds/webpack-resolver'
import './code.less'

const CodeView = () => {
  return (
    <div className='code-wrapper'>
      <AceEditor />
    </div>
  )
}

export default CodeView

        样式:

.code-wrapper {
  display: flex;
  height: calc(100vh);
  background: #f0f0f0;
  background-size: 100% 100%;
  background-repeat: no-repeat;
  justify-content: center;
  align-items: center;
}

        效果:

 三、简单设置

        AceEditor的基础设置包括语言、主题风格等,语言和主题需要引入对应的依赖才会生效。

  • name: 等同于普通div 的id属性,需要保持唯一性
<AceEditor
   // name类似于id和key需要保持唯一性
   name='myCodeView'
 />

实际渲染效果

  • fontSize: 字体大小

  •  style:样式
  • mode:  模式,语言
  • theme:主题样式

<AceEditor
      // name类似于id和key需要保持唯一性
      name='myCodeView'
      // 字体大小
      fontSize={16}
      style={{ width: '80%', height: '80%', minHeight: 80 }}
      mode='javascript'
	  theme='eclipse'
/>

        看一下效果

 四、智能提示补全

        setOptions属性设置:

  • enableBasicAutocompletion:  基础的自动完成功能
  • enableLiveAutocompletion:实时自动完成

  • enableSnippets:代码块

  • showLineNumbers:显示行号

<AceEditor
  // name类似于id和key需要保持唯一性
  name='myCodeView'
  // 字体大小
  fontSize={16}
  style={{ width: '80%', height: '80%', minHeight: 80 }}
  mode='javascript'
  theme='eclipse'
  setOptions={{
    // 基础的自动完成
    enableBasicAutocompletion: true,
    // 实时自动完成
    enableLiveAutocompletion: true,
    // 代码块
    enableSnippets: true,
    // 显示行号
    showLineNumbers: true,
    // tab键两个空格
    tabSize: 2,
  }}
/>

效果:

 

React使用AceEditor实现代码自动补全效果

五、自定义提示

        在调试脚本的时候,可能会用到一些,提前写好的内置的方法,比如可能需要通过后台实现去查询SQL的方法,这个方法就叫“sqlQuery”,参数是一个查询的SQL语句,让这个sqlQuery()也能自动提示。

        

// 核心组件
import AceEditor from 'react-ace'
// 引入对应的语言
import 'ace-builds/src-noconflict/mode-javascript'
//以下import的是风格
import 'ace-builds/src-noconflict/theme-eclipse'
// 代码提示
import 'ace-builds/src-noconflict/ext-language_tools'
import 'ace-builds/webpack-resolver'
import './code.less'
const basicCompletors = [
  {
    name: 'sqlQuery',
    value: 'sqlQuery()',
    score: 100,
    meta: 'sql查询'
  },
]
const CodeView = () => {
  
  const complete = editor => {
    //向编辑器中添加自动补全列表
    editor.completers.push({
      getCompletions: function (
        editor,
        session,
        pos,
        prefix,
        callback
      ) {
        callback(null, basicCompletors);
      }
    });
  }
  return (
    <div className='code-wrapper'>
      <AceEditor
        // name类似于id和key需要保持唯一性
        name='myCodeView'
        // 字体大小
        fontSize={16}
        style={{ width: '80%', height: '80%', minHeight: 80 }}
        mode='javascript'
        theme='eclipse'
        setOptions={{
          // 基础的自动完成
          enableBasicAutocompletion: true,
          // 实时自动完成
          enableLiveAutocompletion: true,
          // 代码块
          enableSnippets: true,
          // 显示行号
          showLineNumbers: true,
          // tab键两个空格
          tabSize: 2,
        }}
        onLoad={editor => complete(editor)}
      />
    </div>
  )
}

export default CodeView

        效果:

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
React使用高德地图的自定义信息窗体,可以通过以下步骤实现: 1. 安装必要的依赖:您需要安装`react-amap`库,该库提供了React组件来与高德地图进行交互。您可以使用npm或yarn来安装它。 ``` npm install react-amap ``` 2. 导入所需组件和样式:在您的React组件文件中导入所需的组件和样式。 ```jsx import { Map, InfoWindow } from 'react-amap'; import 'react-amap/lib/style/index.css'; ``` 3. 创建地图组件:在您的React组件中创建地图组件,并设置必要的属性。 ```jsx const MapComponent = () => { const mapEvents = { created: (mapInstance) => { // 在地图创建完成后,进行相应的操作 }, }; return ( <Map events={mapEvents} zoom={10} center={{ longitude: 120, latitude: 30 }} > {/* 在这里添加其他地图相关的组件和标记 */} </Map> ); }; ``` 4. 创建自定义信息窗体组件:在地图组件中创建自定义的信息窗体组件,并设置相应的内容。 ```jsx const CustomInfoWindow = () => { const infoWindowEvents = { close: () => { // 在信息窗体关闭时,进行相应的操作 }, }; return ( <InfoWindow position={{ longitude: 120, latitude: 30 }} isCustom={true} content={<div>这是自定义的信息窗体内容</div>} events={infoWindowEvents} /> ); }; ``` 5. 将自定义信息窗体组件添加到地图中:在地图组件中将自定义信息窗体组件添加到地图中。 ```jsx const MapComponent = () => { // ... return ( <Map events={mapEvents} zoom={10} center={{ longitude: 120, latitude: 30 }} > <CustomInfoWindow /> </Map> ); }; ``` 通过以上步骤,您就可以在React使用高德地图的自定义信息窗体了。您可以根据需要调整自定义信息窗体的样式和内容。请注意,您需要替换示例中的经纬度和内容为您实际需要显示的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值