当前位置: 首页 > news >正文

monaco editor 在react中的使用

1. 首先先导入monaco editor

npm install monaco-editor// npm install monaco-editor --force   // 版本冲突? 强行安装

2. 在react中使用

期望效果如下



3. 我遇到的问题 : 输入json数据后 未格式化 , json数据仍然一行展示

    我遇到的问题 : 直接输入json数据会白屏报错 


完整代码及解决方法如下
 

import * as monaco from 'monaco-editor' // 引入----------js 部分------------------------- const editorRef = useRef(null)const [code, setCode] = useState('console.log("Hello, world!");')useEffect(() => {if (!editorRef.current) {console.error('editorRef.current is null')return // 早期返回,避免创建编辑器}const editor = monaco.editor.create(editorRef.current, {value: code,language: 'json',theme: 'hc-black' // 主题可选: 'vs', 'vs-dark', 'hc-black'})// 编辑器内容可编辑editor.updateOptions({ readOnly: false })// 监听代码变化editor.onDidChangeModelContent(() => {setCode(editor.getValue())})// 格式化操作const formatAction = editor.getAction('editor.action.formatDocument')if (formatAction) {formatAction.run()}return () => {editor.dispose() // 组件卸载时销毁编辑器实例}}, [code])const formatJson = code => {           // 封装了一个格式化函数try {const parsedJson = JSON.parse(code)const prettyJson = JSON.stringify(parsedJson, null, 2)editorRef.current.setValue(prettyJson)setCode(prettyJson)} catch (error) {console.error('Formatting error:', error)}}useEffect(() => {let aaa = {messages: [{text: 'Hello, how are you?',files: []}]}let newCodeswitch (activeKey2) {case '1':newCode = 'console.log("Hello, world!");'breakcase '2':newCode = '{title: hyy , dataIndex: age}'breakcase '3':newCode = JSON.stringify(aaa, null, 2)   // json转成字符串就不会报错了,且需加上null, 2 让其具备格式化样式breakcase '4':newCode = '{title: hyy 456 , dataIndex: age}'breakdefault:newCode = 'console.log("Hello, world!");'break}// 更新代码并格式化setCode(newCode)formatJson(newCode) // 调用格式化函数}, [activeKey2])  const items2 = [{key: '1',label: '响应体'},{key: '2',label: '响应头'},{key: '3',label: '实际请求'},{key: '4',label: '提取'},{key: '5',label: '断言'}]const [activeKey2, setActiveKey2] = useState('1') // 切换tabs-----------html 部分----------------<TabsdefaultActiveKey='1'items={items2}onChange={key => setActiveKey2(key)}></Tabs><divref={editorRef}style={{height: '500px',paddingTop: '20px',borderRadius: '10px'}}/>


 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 设计模式——对象池模式
  • pg入门3—详解tablespaces2
  • Pandas中DataFrame表格型数据结构
  • 傅里叶变换的基本性质和有关定理
  • 硬件工程师笔试面试——保险丝
  • 【BoF】《Bag of Freebies for Training Object Detection Neural Networks》
  • 网络安全(黑客技术)2024年三个月自学计划
  • 3.接口测试的基础/接口关联(Jmeter工具/场景一:我一个人负责所有的接口,项目规模不大)
  • Visual Studio-X64汇编编写
  • 玩转RabbitMQ声明队列交换机、消息转换器
  • Python 入门教程(4)数据类型 | 4.4、布尔类型
  • QT 修改全局鼠标光标样式并支持还原样式
  • redis群集三种模式:主从复制、哨兵、集群
  • Java运算符有哪些?深入解析Java运算符:从基础到进阶的全方位指南(超全表格)
  • 『功能项目』QFrameWorkBug修改器界面【65】
  • [ JavaScript ] 数据结构与算法 —— 链表
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • android图片蒙层
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • Computed property XXX was assigned to but it has no setter
  • docker python 配置
  • Git学习与使用心得(1)—— 初始化
  • Javascripit类型转换比较那点事儿,双等号(==)
  • LintCode 31. partitionArray 数组划分
  • magento2项目上线注意事项
  • XForms - 更强大的Form
  • 不上全站https的网站你们就等着被恶心死吧
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 我从编程教室毕业
  • 我这样减少了26.5M Java内存!
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  •  一套莫尔斯电报听写、翻译系统
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​iOS安全加固方法及实现
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (4)(4.6) Triducer
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (每日一问)基础知识:堆与栈的区别
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (四)软件性能测试
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)编辑寄语:因为爱心,所以美丽
  • .apk文件,IIS不支持下载解决
  • .gitignore文件使用
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET 发展历程
  • .NET连接MongoDB数据库实例教程