react封装jsoneditor

1、安装:

api文档:jsoneditor

npm install jsoneditor

2、代码:

JsonEditor/index.tsx:

import { useMemoizedFn } from 'ahooks';
import JSONEditor from 'jsoneditor';
import { useEffect, useState } from 'react';
import './index.less';interface Props {jsonValue: any; // 需要渲染的json对象otherOpts?: any; // 其他配置项domId?: string; // 提供一个domid,避免同一个页面使用多个jsoneditor时,元素id重复,对容器的赋值会出现问题,可能会导致数据渲染不对的情况isExpandAll?: boolean; // 是否展开全部,默认不展开containerStyle?: any; // 容器样式,需要给一个宽高,不然可能会看不到jsoneditor
}export default function JsonEditor(props: Props) {const { jsonValue, otherOpts = {}, domId = 'jsoneditor', isExpandAll, containerStyle } = props;const [jsonRef, setJsonRef] = useState<any>(null);let editor: any;const renderJsonEditor = useMemoizedFn(() => {const container = document.getElementById(domId);if (container) {container.innerHTML = ''; // 防止添加多个jsoneditorconst options: any = {mode: 'view',modes: ['code', 'text', 'tree', 'view'],language: 'en',...otherOpts,};editor = new JSONEditor(container, options);editor.set(jsonValue);if (isExpandAll) {editor.expandAll();}}});useEffect(() => {renderJsonEditor();return () => {editor?.destroy();};}, [jsonRef, renderJsonEditor, jsonValue, editor]);return <div style={containerStyle} ref={setJsonRef} id={domId} />;
}

JsonEditor/index.less:

div.jsoneditor-field,
div.jsoneditor-value {cursor: pointer;
}

效果图:
在这里插入图片描述

注意:

  • 提供一个domid,避免同一个页面使用多个jsoneditor时,元素id重复,对容器的赋值会出现问题,可能会导致数据渲染不对的情况

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis 主从复制 哨兵 安装部署

学习开始前先了解一下 Redis是一个开源的内存数据结构存储系统&#xff0c;它支持多种数据结构&#xff0c;如字符串、哈希表、列表、集合、有序集合等。Redis最大的特点是数据存储在内存中&#xff0c;因此读写速度非常快&#xff0c;同时也支持数据持久化&#xff0c;可以将数…

【K8S系列】如何高效查看 k8s日志

序言 你只管努力&#xff0c;其他交给时间&#xff0c;时间会证明一切。 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记一级论点蓝色&#xff1a;用来标记二级论点 Kubernetes (k8s) 是一个容器编排平台&#x…

AndroidStudio xml布局文件输入没有提示

AndroidStudio xml布局文件输入没有提示&#xff0c;如下图&#xff1a; 原因是老的AndroidStudio与新的sdk版本不一致 方法1&#xff1a;修改compileSdkVersion低于33即可&#xff0c;不建议 方法2&#xff1a;升级AndroidStudio版本&#xff0c;建议 如下是我的AndroidStu…

Docker部署(1)——将jar包打成docker镜像并启动容器

在代码编写完成即将部署的时候&#xff0c;如果采用docker容器的方法&#xff0c;需要将jar包打成docker镜像并通过镜像将容器启动起来。具体的步骤如下。 一、首先下载java镜像 先使用docker search java命令进行搜索。 然而在拉取镜像的时候要注意不能直接去选择pull java ,…

改进的白鲸优化算法

改进的白鲸优化算法 一、算法灵感二、算法介绍2.1 初始化2.2 探索阶段2.3 开发阶段2.4 鲸落阶段 三、改进的白鲸优化算法3.1 集体行动策略3.2 小孔成像策略3.3 二次插值策略3.4 IBWO伪代码 一、算法灵感 白鲸优化算法(Beluga whale optimization, BWO)是2022年提出的一种元启发…

需求分析引言:架构漫谈(三)可用性专题

前文介绍了非功能性需求的各个指标和一些业界的标准。 非功能性需求里有一项可靠性&#xff0c;与之关联的一个指标叫可用性 本文对非功能性需求里的可用性、可靠性&#xff0c;进行一些详细的说明。 概念 我们在网上的云服务商处&#xff0c;经常看到产品介绍里会有这种字样…

系列五、NotePad++下载安装

一、下载 链接&#xff1a;https://pan.baidu.com/s/1U2f74vfBJIds7W2wJYnBxg?pwdyyds 提取码&#xff1a;yyds 二、安装 2.1、安装NotePad 解压NotePad-x64.zip至指定目录即可&#xff0c;例如 2.2、安装NppFTP 2.2.1、查看NotePad对应的位数&#xff08;32位or64位&a…

最强优化指令大全 | 【Linux技术专题】「系统性能调优实战」终极关注应用系统性能调优及原理剖析(下册)

Linux命令相关查看指标 CPU 指标 vmstat指令 vmstat -n m该命令用于每隔n秒采集系统的性能统计信息&#xff0c;共采集m次。 [rootsvr01]$ vmstat 1 3procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----r b swpd free buff cache …

行业榜单揭晓:项目管理软件排行榜中的行业翘楚!

在当今复杂的商业环境中&#xff0c;项目管理软件已经成为企业管理不可或缺的工具之一。它们帮助企业组织和协调各个部门的工作&#xff0c;并确保项目能够按时、按预算、按质量要求完成。这就是为什么许多公司都在积极寻找最好的项目管理软件。但是&#xff0c;市场上有许多项…

一个人也可以是【大厂】,三年程序员的生活规划心路分享!

自从工作之后&#xff0c;我就经常思考以下这些问题&#xff1a; 还有多久退休&#xff1f;明天可以退休吗&#xff1f;地球什么时候爆炸&#xff1f;我什么时候可以暴富辞职&#xff1f;我真的需要这份工作吗&#xff1f; 要问是从什么时候开始有这些问题的&#xff0c;大概…

探索嵌入式开发领域:单片机、ARM、Android底层的紧密联系

作为一个曾编写ARM教程和参与Android产品开发的专家&#xff0c;我发现单片机、ARM、嵌入式开发和Android底层开发之间存在紧密的联系。对于那些希望在嵌入式开发领域发展的人来说&#xff0c;了解这些领域的知识至关重要。为了帮助你更好地学习这些内容&#xff0c;我总结了一…

CGAL使用心得 转

CGAL使用心得 转 作者&#xff1a;李浩 首先我说说我研究CGAL的背景&#xff0c;由于&#xff0c;早一阵子&#xff0c;有一个需求&#xff0c;需要求出在一堆二维线中&#xff08;包括直线和弧线&#xff09;&#xff0c;找出所有的最小区域和最大外包。如下图所示。 在这两…