首页 > 其他分享 >react中CodeMirror (代码编辑器)

react中CodeMirror (代码编辑器)

时间:2024-10-10 14:50:04浏览次数:7  
标签:CodeMirror 代码 js react fold 编辑器 import codemirror addon

 前言:

  实现一个在react项目中页面展示代码编辑器的效果。

codemirror:

  使用JavaScript为浏览器实现的多功能文本编辑器。codemirror作用:专门用于编辑代码,并带有实现更高级编辑功能的多种语言模式和附加组件

实现效果

编辑

1. 首先从react-codemirror2中引入Codemirror组件   

import {UnControlled as CodeMirror} from 'react-codemirror2'

 

2. 他的核心在于引入codemirror.js和codemirror.css

import 'codemirror/lib/codemirror.js'
import 'codemirror/lib/codemirror.css'

 

3.  codemirror的背景主题(可以设置自己喜欢的主题样式),同时他还需要在options里面设置theme:'yonce'

import 'codemirror/theme/yonce.css'

 

4. 引入一些代码模式

// 代码模式,clike是包含java,c++等模式的
import 'codemirror/mode/clike/clike'   
import 'codemirror/mode/javascript/javascript'   //js
import 'codemirror/mode/python/python.js'        //python

 

 5. 代码高亮和代码折叠

//代码高亮
import 'codemirror/addon/selection/active-line';
 
// 代码折叠
import 'codemirror/addon/fold/foldgutter.css'; 
import 'codemirror/addon/fold/foldcode.js';
import 'codemirror/addon/fold/foldgutter.js';  
import 'codemirror/addon/fold/brace-fold.js';  
import 'codemirror/addon/fold/comment-fold.js';

 

6、可以通过插件获取到simple和overlay两种,但是需要引入js和css,咋了好久才找到,分别是:

//代码滚动
import 'codemirror/addon/scroll/simplescrollbars.js'
import 'codemirror/addon/scroll/simplescrollbars.css'

 

渲染代码

 const {text} = this.state;//自己在state中定义初始代码编辑框中的值

<CodeMirror
                  id='scriptDesc'
                  editorDidMount={editor => { this.instance = editor; }}
                  value={text}
                  onChange={this.changeCode}
                  // eslint-disable-next-line no-return-assign
                  ref={(c) => this.myCodeMirror = c}// 添加ref属性获取dome节点
                  options = {{
                      lineNumbers: true, // 显示行号
                      mode: {name: 'text/x-java' || 'javascript'}, // 语言
                      autofocus: true, // 自动获取焦点
                      styleActiveLine: true, // 光标代码高亮
                      theme: 'yonce', // 主题
                      scrollbarStyle: 'overlay',
                      lineWrapping: true, // 代码自动换行
                      foldGutter: true,
                      gutters: ['CodeMirror-linenumbers', 'CodeMirrorfoldgutter'] // end
                  }}
              />

 

方法

  changeCode = (CodeMirror, changeObj, value) => {
      if (!value) return;
      // 获取 CodeMirror.doc.getValue()
      // 赋值 CodeMirror.doc.setValue(value) // 会触发 onChange 事件,小心进入无线递归。
      this.setState({text: value});
  };

 


标签:CodeMirror,代码,js,react,fold,编辑器,import,codemirror,addon
From: https://www.cnblogs.com/qing1224/p/18456361

相关文章

  • react 路由
    安装ReactRouternpminstallreact-router-dom在入口文件main.jsx配置首先在react项目的入口文件index.js文件中,使用BrowserRouter将包裹起来import{StrictMode}from"react";import{BrowserRouter}from"react-router-dom";import{createRoot}from"......
  • 如何将React项目,部署到Web服务器的Tomcat 上
    将React应用部署到Tomcat服务器上通常需要将其构建为静态文件,然后将这些文件放入Tomcat的webapps目录。以下是具体步骤:步骤指南1.构建React应用首先,你需要在本地构建你的React应用。npmrunbuild这会在项目根目录下生成一个build文件夹,里面包含了优化......
  • 编辑器项目搭建(一)项目初始化
    技术选择底层:Vite(设计维护都较友好)+React+Ts(项目越来越大并复杂,需标记变量类型,有助于项目管理)路由:ReactRouter状态管理:ZustandUI:AntD其他:iconfont+less+axios+Immer+loadash+react-color创建一个项目用vite开一个ReateTS项目pnpmcreateviteFlavor--templatereate-t......
  • React Native性能剖析:Flipper工具使用
    文章目录Flipper工具简介安装Flipper连接Flipper使用Flipper分析性能ReactNative插件Network插件Layout插件HeapGraph插件GraphQL插件实战案例分析案例1:性能瓶颈定位案例2:内存泄漏检测优化代码再次使用Flipper分析进阶技巧性能优化技巧内存优化技巧......
  • 富文本编辑器UEDITOR支持从WORD复制粘贴保留格式和图片的插件
    编辑器:百度ueditor前端:vue2,vue3,vue-cli,html5需求:复制粘贴word内容图片,word图片转存交互,导入pdf,导入PowerPoint(PPT)要求:开源,免费,技术支持用户体验:Ctrl+V快捷键操作该说不说,最近这块应该也是挻火的,今天早上又有网友加我微信私聊,说是想了解一下这块的技术和方案。实......
  • 选择 PDF 编辑器时要考虑什么?如何选择适用于 Windows 10 的 PDF 编辑器
    选择PDF编辑器时要考虑什么?随着技术的出现,您在网上浏览时肯定会遇到一些PDF软件。但是,选择PDF编辑器时需要考虑什么?如果您是重度用户并将在您的工作场所使用它,建议您找到专业、使用方便且能够帮助您完成任务的PDF软件。以下是您在寻找优秀编辑器时可能考虑的几件事:适......
  • Eplan插件 - 自由文本编辑器
    前言使用此插件可以快速完成对项目中的自由文本、路径功能文本的修改、删除等操作。插件介绍用户界面插件UI界面进行了更新,相比较之前的插件界面风格更清爽简洁。功能介绍插件批量将选中文本中的源文本替换为修改文本。插件支持多种选择方式,可以在绘图区选中文本,也可在......
  • React学习起始
    一、准备工作react是一个用于构建用户界面的JavaScript库脚手架安装:npxcreate-react-app(脚手架名称)react-basic(包名)--------等同于maven构建项目的性质启动项目:yarnstartornpmstart注:全局安装缺点:太久没初始化项目,就得重新装 二、基本使用1导包2创建元素3渲染元......
  • 为什么 React 和 Vue 不采用像 Svelte 那样的编译方式?
    在前端框架的竞争中,Svelte近年来以其极高的性能和轻量级的架构吸引了众多开发者的注意。与React和Vue等传统框架不同,Svelte通过编译时优化实现高效的UI更新,不依赖于虚拟DOM。然而,尽管Svelte的这种方法具有明显的性能优势,React和Vue仍然没有采用类似的编译方式......
  • React高阶组件详解
    React高阶组件(HOC)详解定义React高阶组件(HOC)是一个函数,该函数接受一个组件作为参数并返回一个新的组件。高阶组件本身不是一个组件,而是一个函数,它利用React的组合特性,对传入的组件进行增强或修改。使用场景代码重用:当多个组件需要共享相同的逻辑时,可以使用高阶组件来封装这......