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'}}/>


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1539506.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

安卓 uniapp跨端开发

HBuilder X 4.24 本地插件方式使用原生插件 例如 MT-TTS 地址PS: 播放 speek({text: ‘test’}) 应为 播放 speak({text: ‘test’})MT-TTS下载下来之后,将 nativeplugins 文件夹拷贝到 uniapp 项目根目录中manifest.json ---- App原生插件配置 运行 语音引擎测试文字转语音播…

基于CNN的10种物体识别项目

一&#xff1a;数据导入和处理 1.导入相关包&#xff1a; import numpy as np import pandas as pd import matplotlib.pyplot as plt import tensorflow as tf2.下载数据 (x_train_all, y_train_all), (x_test, y_test) tf.keras.datasets.cifar10.load_data()# x_valid:测…

基于springboot的智慧社区微信小程序

文未可获取一份本项目的java源码和数据库参考。 本课题研究目标 本文主要对小区生活服务平台的功能和非功能需求进行了分析&#xff0c;系统除了提供物业保修、小区资讯、投诉留言、常用电话等基础功能外&#xff0c;为了满足用户的多样化需求&#xff0c;还提供邻里圈子和有…

sheng的学习笔记-AI-归纳逻辑程序设计(ILP)

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 规则学习&#xff08;rule learning&#xff09;: sheng的学习笔记-AI-规则学习&#xff08;rule learning&#xff09;-CSDN博客 一阶规则学习&#xff1a; sheng的学习笔记-AI-FOIL(First-Order Inductive Learner)-CSD…

Tiny-universe学习笔记1:Qwen-blog

本文是参与Datawhale Tiny-universe组队学习的第一篇学习笔记&#xff0c;参考链接&#xff1a;https://github.com/datawhalechina/tiny-universe Tiny-universe学习笔记1&#xff1a;Qwen-blog Qwen整体架构与Llama2类似&#xff0c;具体如下图所示&#xff1a; 其中&#…

1 elasticsearch安装

【0】官网参考 https://www.elastic.co/guide/en/elasticsearch/reference/7.11/targz.html 【1】Centos7 下载安装 【1.1】下载 官网&#xff1a;Download Elasticsearch | Elastic 选择好自己想要的相关版本即可&#xff1b; 【2】Centos7.X 前置环境配置&#xff08;uli…

C# 访问Access存取图片

图片存入ole字段&#xff0c;看有的代码是获取图片的字节数组转换为base64字符串&#xff0c;存入数据库&#xff1b;显示图片是把base64字符串转换为字节数组再显示&#xff1b;直接存字节数组可能还好一点&#xff1b; 插入的时候用带参数的sql写法比较好&#xff1b;用拼接…

汽车应用生态系统的飞跃

在过去的几年里&#xff0c;汽车系统经历了前所未有的变革&#xff0c;驾驶员和乘客对于车内体验的期待已远远超越了传统的驾驶范畴。随着技术的不断进步&#xff0c;基于Android Automotive OS&#xff08;AAOS&#xff09;和Google Automotive Services&#xff08;GAS&#…

毕业设计选题:基于ssm+vue+uniapp的农产品自主供销小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…

力扣 167.两数之和||—输入为有序数组

文章目录 题目介绍解法 题目介绍 解法 利用相向双指针&#xff0c;初始时l在最用左边&#xff0c;r在最右边 1.numbers[l] numbers[r] < target 则 l 2.numbers[l] numbers[r] < target 则 r 3.numbers[l] numbers[r] target 说明找到了答案 class Solution {publi…

WPF DataGrid 单元格居中,头部居中,点击行改变背景色。

我得全局样式都写在了App.XAML文件下的ResourceDictionary里&#xff0c;方便全局引用 DataGrid样式和点击改变行背景色的触发器(BasedOn继承的是UI框架的样式&#xff0c;若无则删除&#xff0c;触发器还有鼠标移动事件等&#xff0c;按需自行修改添加) <Style x:Key&quo…

联想正式在印度生产AI服务器!致力于在印度开发世界“尖端”技术真的能实现吗?|AI日报

文章推荐 OpenAI以1500亿美元公司估值向投资者筹集65亿美元&#xff01;安卓版谷歌Gemini Live免费上线&#xff5c;AI日报 今日热点 联想集团将在印度生产AI服务器 联想集团周二宣布&#xff0c;将开始在其位于印度南部的工厂生产AI服务器&#xff0c;并在班加罗尔的科技中…

Vue3(一) Vite创建Vue3工程,选项式API与组合式API;setup的使用;Vue中的响应式ref,reactive

文章目录 一、创建Vue3工程1. vue-cli方式2. vite方式3. 项目小说明4. 安装插件&#xff1a;(1) Prettier--整理格式(2) Vue-official 二、 OptionsAPI 与 CompositionAPI1 选项式API的弊端2 组合式API的优势 三、setup1. 基本使用2 setup与组合式API3 setup语法糖 四、Vue中的…

[Redis][String][上]详细讲解

目录 0.前言1.常见命令1.SET2.GET3.MSET && MGET4.SETNX && SETXX 2.计数命令1.INCR2.INCRBY3.DECR4.DECYBY5.INCRBYFLOAT6.注意 0.前言 字符串类型是Redis最基础的数据类型&#xff0c;关于字符串需要特别注意&#xff1a; Redis中所有的键的类型都是字符串类…

【南方科技大学】CS315 Computer Security 【Lab3 Format String Vulnerability】

目录 Lab OverviewLab TasksTask 1: The Vulnerable ProgramTask 2: Understanding the Layout of the StackTask 3: Crash the ProgramTask 4: Print Out the Server Program’s MemoryTask 5: Change the Server Program’s MemoryTask 6: Inject Malicious Code into the Se…

Vue2学习笔记(02条件渲染 、监视数据的原理)

1、v-if和v-show的区别 2、Vue监视数据的原理

gcc升级(含命令行升级、手动升级两种方式)

gcc升级 1.yum源替换1.1 备份原始repo配置文件1.2 重新配置CentOS-Base.reporepo文件1.3 清除缓存并重新创建 2. gcc安装3.命令行升级gcc4.手动升级4.1 安装包下载4.2 解压4.3 gcc升级4.3.1 依赖拉取4.3.2 gmp安装4.3.3 mpfr安装4.3.4 mpc安装4.3.5 gcc编译、安装 4.4 gcc命令配…

springsecurity+jwt实现前后端分离认证授权

文章目录 1.简介2.快速入门3.认证3.1登录校验流程3.2原理初探3.3认证详流程详解3.4 分析UsernamePasswordAuthenticationFilter 4.案例实战4.1 思路分析4.2准备工作4.3实战1.数据库校验用户2.核心代码1.创建UserDetailsService实现类2.创建UserDetails实现类3.密码加密存储模式…

前端界面搜索部分,第一个选择框的值,影响第二个选择框的值

1.字段声明 {title: 单位名称,dataIndex: departmentId,align: center,width: 100,hideInTable: true,renderFormItem: (item, { defaultRender, ...rest }) > (<ProFormSelectname"departmentId"// label"单位名称"options{hospitaltData}onChange…

fiddler抓包06_抓取https请求(chrome)

课程大纲 首次安装Fiddler&#xff0c;抓https请求&#xff0c;除打开抓包功能&#xff08;F12&#xff09;还需要&#xff1a; ① Fiddler开启https抓包 ② Fiddler导出证书&#xff1b; ③ 浏览器导入证书。 否则&#xff0c;无法访问https网站&#xff08;如下图&#xff0…