前言:

  实现一个在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中定义初始代码编辑框中的值<CodeMirrorid='scriptDesc'editorDidMount={editor => { this.instance = editor; }}value={text}onChange={this.changeCode}// eslint-disable-next-line no-return-assignref={(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});};

react中CodeMirror (代码编辑器)相关推荐

  1. React中CodeMirror插件的使用及封装

    目录 一.CodeMirror是什么 二.React中CodeMirror的基本使用介绍 (一)引入CodeMirror 1. 安装CodeMirror插件 2.引入 CodeMirror 插件 (二 ...

  2. React中使用Markdown编辑器

    前言 因为之前写过一个自己的博客,其中编辑文章使用的是富文本编辑器,后来用到Markdown编辑,感觉要比富文本更好用,这里简单记录一下如何在React中添加Markdown编辑器. 一 安装 这里我 ...

  3. vue2使用Codemirror代码编辑器插件

    让我们先看看需求 :一个有SQL语言提示代码编辑器  一 . 我这里用的是vue2 三种方法,得指定版本号,不指定就是默认最新,版本6以上都是vue3的版本,引入使用会报错 vue3的版本叫vue-c ...

  4. vue集成codemirror代码编辑器

    点击上方" 青年码农 "关注 回复"特效源码"可获取各种资料 CodeMirror是一个用 JavaScript 为浏览器实现的通用文本编辑器.它专门用于编辑代 ...

  5. vue项目中使用代码编辑器,视频播放器插件

    1.Vue-代码编辑器插件 1)安装 npm install monaco-editor --save npm install monaco-editor-webpack-plugin --save- ...

  6. CodeMIrror.js在线代码编辑器简单使用

    代码高亮是程序员的刚需,不管是在笔记类,论坛类,博客类web网站中,都对代码高亮提出要求,不高亮的代码阅读体验很差,codeMirror是一个前端代码高亮库,使用方便.CodeMirror 是一款在线 ...

  7. dw上的php代码如何预览在浏览器_13个面向开发人员的JavaScript代码编辑器和IDE

    根据知乎的说法,JavaScript(JS)是一种解释性的计算机编程语言.它最初是作为Web浏览器的一部分实现的,这样客户端脚本就可以与用户交互.控制浏览器.异步通信以及更改显示的文档内容. 在本文中 ...

  8. 在线代码编辑器:Monaco Editor

    monaco editor是微软开源的一款web版代码编辑器.它支持智能提示,代码高亮,代码格式化. Monaco Editor是为VS Code提供支持的代码编辑器,运行在浏览器环境中.编辑器提供代 ...

  9. java在线编辑器_微软开源在线代码编辑器——Monaco Editor

    介绍 Monaco Editor是为VS Code提供支持的代码编辑器,运行在浏览器环境中.编辑器提供代码提示,智能建议等功能.供开发人员远程更方便的编写代码.移动浏览器或移动Web框架不支持Mona ...

最新文章

  1. android切图尺寸_安卓设计尺寸规范
  2. java爬树方法_Java-grandMother.java
  3. 三十一、Scrapy爬取百度图片
  4. 2014\Province_C_C++_B\3 李白打酒
  5. Gradle入门 - 一个最简单的hello world级别的例子
  6. Mybatis系列(四):Mybatis缓存
  7. sco linux crontab重启,crontab 详解
  8. python怎么读取pdf为文本_如何从pdf文件中提取特定文本python
  9. totalspider爬虫批量重启报错Connection Error
  10. noi 8780 拦截导弹
  11. 计算机并口优点,并口的主要特点 - USB接口、串口、并口有何区别
  12. 微信小程序开发工具使用方法
  13. 图像处理笔记——边缘检测算子
  14. win10系统重装步骤详解
  15. ERROR ITMS-4238
  16. 登录蒸汽平台显示连接服务器异常,蒸汽平台连接服务器失败
  17. Revit SDK 介绍:ModelessForm_ExternalEvent ModelessForm_IdlingEvent
  18. 集合(set) 深浅拷贝
  19. python假分数约分,数学中假分数怎么约分
  20. 百度地图多标注显示以及自定义图标

热门文章

  1. Deer计划(1)点云数据解析成图
  2. INTERVAL '1' MONTH TO MONTH
  3. 小学计算机教师集体备课计实,教师集体备课心得体会精选5篇合集
  4. 【毅力挑战】PCIe 每日一问一答(2022.12 已归档)
  5. 图片识别——差异哈希算法
  6. CCPC-Wannafly Winter Camp 总结
  7. python读取枚举_一文读懂Python 枚举
  8. python学习 论语提取原文
  9. tp-link wr 841n 300m 局域网限速的研究
  10. SpringBoot应用环境分析StandardEnvironment