react封装jsoneditor

news/2024/11/30 9:46:36/

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.ppmy.cn/news/682483.html

相关文章

MyBatis源码解析之加载 mybatis-config

概述 在 MyBatis 初始化过程中&#xff0c;会加载 mybatis-config.xml 配置文件、映射配置文件以及 Mapper 接口中的注解信息(包括属性配置、别名配置、拦截器配置、环境&#xff08;数据源和事 务管理器&#xff09;、Mapper配置等)&#xff0c;解析后的配置信息会形成相应的对…

0x80004005错误代码解决方法_lol手游100014是什么意思 错误代码100014解决方法[多图] -手游问答...

LOL手游100014这个错误该如何解决&#xff0c;同时代码的具体含义是什么呢&#xff0c;遇到之后大家该如何操作呢&#xff0c;下面一起来看看具体的攻略内容。 首先提示错误代码100014是说明你网络不佳&#xff0c;需要用加速软件&#xff0c;这个玩家可以自行去应用商店下载。…

fantastical怎么设置中文_英雄联盟手游韩服怎么设置中文 英雄联盟手游韩服设置中文教程_游戏资讯...

英雄联盟手游现在在海外地区已经进行测试了&#xff0c;而国内暂时还没有上线&#xff0c;很多朋友想要抢先体验一下&#xff0c;所以纷纷注册了外服的账号&#xff0c;但是在注册登录之后发现上面的语言看不懂&#xff0c;那应该怎么将语言进行修改呢&#xff1f;相信各位玩家…

无法往开启kerberos的zookeeper上注册服务_英雄联盟手游拳头账号有几个区?lol手游韩国账号怎么注册?...

英雄联盟手游从10月28日正式开启全球范围多服务器的同时公测&#xff0c;本次公测开放了日服、韩服、东南亚服、美服、欧服等地区的服务器&#xff0c;并且账号信息互通&#xff0c;也就是都处于统一的一个拳头账号名下&#xff0c;玩家们能够在各个服务器之间进行切换&#xf…

2021-07-11

初学html的一些基本用法 <html> <head> <meta charset"utf-8"> <title>测试</title> </head><body background"lol.jpeg" style"background-repeat:no-repeat background-attachment:fixed; background-siz…

ourplay插件_ourplay64位辅助包

ourplay64位辅助包是一款可以帮助用户更好的进行游戏的软件,没有这款软件的话很多的游戏都可能玩不了,在OurPlay软件上你可以看到海量的游戏资源和新游推荐,可以给你带来非常好的游戏体验,感兴趣的朋友赶紧下载ourplay64位辅助包开始使用吧! ourplay64位辅助包介绍 OurPlay,一…

riot修改服务器,riot改地区教程

使用riot games的玩家大多都知道&#xff0c;自己的拳头账号无法随意切换地区。相信还有很多小伙伴不是很清楚怎么修改riot拳头账号所在地区&#xff0c;下面小编给大家带来riot改地区教程&#xff0c;感兴趣的小伙伴们一起来看看吧&#xff0c;希望能帮助到你们。 小编推荐&am…

云顶之奕账号服务器的缩写,云顶之弈各服务器上线时间一览

云顶之弈已经在美服PBE测试一段时间了&#xff0c;终于要开始登陆正式服了&#xff0c;下面为大家带来的是lol云顶之弈各服务器的正式上线时间一览&#xff0c;一起来了解一下吧。 云顶之弈各服务器上线时间一览 由于以下的时间都是太平洋时区&#xff0c;需要延后一天算。而为…