首页 > 其他分享 >React之Json编辑器

React之Json编辑器

时间:2024-12-21 11:19:53浏览次数:4  
标签:const center ace 编辑器 React setIsModalOpen Json import border

我们先看下效果,这个白色是不是非常不错?没有太多复杂的功能,就是当一个简洁显示json并且进行编辑的功能


接下来是代码部分

import AceEditor from 'react-ace';
import { Button, Modal } from 'antd';
import './styles.css';

// Import ace editor themes and modes
import 'ace-builds/src-noconflict/mode-json';
import 'ace-builds/src-noconflict/theme-github';

function App() {
  const [jsonContent, setJsonContent] = useState(`{
  "greeting": "Hello World",
  "color": "#ff3e00",
  "ok": true,
  "values": [1, 2, 3, 4, 5]
}`);
  const [isModalOpen, setIsModalOpen] = useState(false);

  const handleEditorChange = (value: string) => {
    setJsonContent(value);
  };

  const handleSubmit = () => {
    setIsModalOpen(true);
  };

return (
  <div className="json-view-container">
    <h2>JSON Editor</h2>
    <div className="editor-wrapper">
      <AceEditor
        mode="json"
        theme="github"
        value={jsonContent}
        onChange={handleEditorChange}
        name="json-editor"
        editorProps={{ $blockScrolling: true }}
        setOptions={{
          showLineNumbers: true,
          tabSize: 2,
          useWorker: false,
          fontFamily: 'Fira Code, monospace',
          fontSize: 16,
          printMargin: false 
        }}
        width="100%"
        height="400px"
      />
    </div>
    <div className="button-container">
      <Button type="primary" onClick={handleSubmit}>
        提交
      </Button>
    </div>
    <Modal
      title="JSON Content"
      open={isModalOpen}
      onOk={() => setIsModalOpen(false)}
      onCancel={() => setIsModalOpen(false)}
    >
      <pre>{jsonContent}</pre>
    </Modal>
  </div>
);}
export default App;

样式代码

.json-view-container {
  padding: 20px;
  height: 60vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
}

h2 {
  margin-bottom: 10px;
  text-align: center;
}

.editor-wrapper {
  width: 80%;
  max-width: 800px;
  border: 1px solid #e8e8e8;
  border-radius: 4px;
  overflow: hidden;
  margin-bottom: 10px;
}

.button-container {
  display: flex;
  justify-content: center;
  padding: 0;
}

.ant-modal-body pre {
  background-color: #f5f5f5;
  padding: 16px;
  border-radius: 4px;
  margin: 0;
  overflow: auto;
  max-height: 400px;
  white-space: pre-wrap;
  word-wrap: break-word;
}

点个赞,支持作者在博客园继续更新!

标签:const,center,ace,编辑器,React,setIsModalOpen,Json,import,border
From: https://www.cnblogs.com/chiusto/p/18620548

相关文章

  • React性能优化实战:从理论到落地的最佳实践
    "这个列表页怎么这么卡?"产品经理皱着眉头看着我。作为一个接手海外电商项目的前端开发者,我深知性能问题的重要性。特别是在东南亚市场,很多用户使用的是中低端手机,网络条件也不太理想。最近一个月,我带领团队对整个React应用进行了一次全面的性能优化,不仅解决了性能问题,还总......
  • 【Unity实用技巧】Transform组件位置快速对齐(编辑器扩展)
    前言在Unity项目开发中,经常需要调整物体的位置。特别是在处理3D模型时,我们可能需要将一个父物体移动到其所有子物体的中心位置或底部中心位置。本文将介绍如何通过Unity编辑器扩展来实现这个功能,让美术同学在摆放模型时更加方便。一、效果演示二、完整代码这里直接上......
  • DuckDB:JSON数据探索性分析实战教程
    简单来说,EDA通常指的是数据集的任何初始处理。通常,这些是较小的数据集,是较大数据集的子集,但你也可以使用大数据执行EDA。在本文中,你将扮演SecOps分析师的角色,对EDR(EndpointDetectionandResponse:端点检测和响应)数据的快照执行EDA,这些数据可能来自主流工具。测试数据......
  • 修改python jsonpickle源码, 实现不序列化对象私有成员(3)
    发现之前修改源码后,虽然过滤掉对象的私有成员,但是反序列化的时候,发现生成的对象只有只有公有成员,不包括私有成员.这不是我想要的,因为没有私有成员,对象就不完整了,并且有时候还需要一些私有成员的默认值.所以,还需要再优化一下.修改unpickler.py文件的def_restor......
  • 【全网最细】Y3编辑器场景案例教学指南-场景氛围、画面表现
    迅速提升场景氛围调整时间控制全局光照在编辑器中心界面的右上角,有一个时间选项,可以在其中通过调整时间来控制地图中太阳光源的位置。除此之外,也可在编辑器顶层的菜单栏里,打开细节-美术效果,勾选属性右侧的高级设置,便可在其中更精准地控制全局光照。由于游戏内时间的变化,会......
  • 【全网最细】Y3编辑器场景案例教学指南-开局使用、筛选资产
    为了方便Y3编辑器的使用者快速上手制作自己的游戏场景,我们整理了一些操作相关的教学案例。按照大纲规划的顺序逐步了解各项功能的拓展性,熟悉制作流程,让制作变得更简单和流畅。如何开局使用工具创建项目以及调整设置打开Y3编辑器后,你可以从我的项目中创建新地图,并在项目设......
  • React+Vite从零搭建项目及配置详解
    相信很多React初学者第一次搭建自己的项目,搭建时会无从下手,本篇适合快速实现功能,熟悉React项目搭建流程。目录一、创建项目react-item二、调整项目目录结构三、使用scss预处理器四、组件库AntDesign五、配置基础路由六、配置别名路径一、创建项目react-itemnpmc......
  • SpringBoot3整合FastJSON2如何配置configureMessageConverters
    在SpringBoot3中整合FastJSON2主要涉及到以下几个步骤,包括添加依赖、配置FastJSON作为JSON处理器等。下面是详细的步骤:1.添加依赖首先,你需要在你的pom.xml文件中添加FastJSON2的依赖。以下是Maven依赖的示例:<!--https://mvnrepository.com/artifact/com......
  • Jackson的@JsonGetter 注解
    1.概述Jackson是Java生态系统中不可或缺的工具,提供了将Java对象序列化为JSON以及反序列化的功能。它的一个特性是@JsonGetter注解,用于在序列化过程中自定义getter方法输出的名字。@JsonGetter注解概览Jackson的@JsonGetter注解用来标识一个方法作为特定属......
  • Jackson 的@JsonAnyGetter注解
    1.概述在Java领域,Jackson是一个非常灵活的库,用于将Java对象转换为JSON格式,并支持反向操作。它的一个强大注解是@JsonAnyGetter,该注解允许在序列化的JSON中添加动态属性,而无需在POJO(PlainOldJavaObject)中定义具体的属性。@JsonAnyGetter注解概览@JsonAnyGe......