日志信息展示的好帮手:react-json-view介绍

4,448 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

react-json-view是什么

react-json-view:官方对它的解释为,是一个React组件,可用可视化的显示、编辑JS数组或者JSON对象。所以react-json-view本质上是一个组件,使用方法也与React组件的使用方式无差。

安装方式

npm install --save react-json-viewyarn add react-json-view

基本用法

首先引入react-json-view,然后传入必传的src字段即可,src属性表示需要展示的JSON数据,是一个JSON对象类型,如下示例:

// 1.引入RVJ
import ReactJson from 'react-json-view';

export default function Demo1() {
  // 2.定义JSON Object类型的对象
  const jsonObj = {
    name: 'lucy',
    sex: 'female',
    age: 18,
  };
  return (
    <div style={{ padding: 20 }}>
      {/* 3.使用ReactJson组件并传入jsonObj */}
      <ReactJson src={jsonObj}></ReactJson>
    </div>
  );
}

效果如下所示:

image.png
当鼠标滑过每一行时,会出现可以复制的提示,就能够快速复制对应的内容:

image.png
如果想要更改数据展示的主题,可以通过theme属性进行更改,RJV现在能够支持base-16主题,比如:

// 主题
const themeArr = [
  'apathy',
  'apathy:inverted',
  'ashes',
  'bespin',
  'brewer',
  'bright:inverted',
  'bright',
  'chalk',
  'codeschool',
  'colors',
  'eighties',
  'embers',
  'flat',
  'google',
  'grayscale',
  'grayscale:inverted',
  'greenscreen',
  'harmonic',
  'hopscotch',
  'isotope',
  'marrakesh',
];

...

   {themeArr.map((item: any) => (
     <div style={{margin: '10px 0'}}>
       <ReactJson src={jsonObj} theme={item}></ReactJson>
     </div>
   ))}

image.png 虽然可以通过theme属性快速更改主题样式,但是如果想要定制样式,也可以通过style属性进行自定义。 react-json-view简称RJV,它更多的属性信息可通过GitHub官方链接查看,如下表格为RJV的常用props,可以按照表格或上述链接进行学习。

属性类型默认值描述
srcJSON ObjectNone输入的JSON对象
namestring 或 falseroot4
themestringrjv-defaultbase-16主题样式
styleobject{}自定义样式
iconStylestringtriangle展开符号样式,circle(圆)、triangle(三角形)、square(方形)
collapsedboolean或integerfalse是否折叠或折叠深度
RJV还有几个方法属性,分别为:
  • onEdit
  • onAdd
  • onDelete
  • onSelect 上述四个属性都可用于当用户进行对应操作后处理的回调函数。如下所示,JSON数据展示分别可以进行不同的操作:

当点击加号符号、编辑符号、删除符号、左向箭头符号可以进行添加、编辑、删除该属性和选中复制操作。效果如下面几个图所示:

image.png 当点击加号时,出现添加弹窗,可以添加一个新的属性 image.png
当点击编辑符号时,可以修改属性名

image.png

总结

react-json-view能够帮助可视化的展示数据,特别是JSON格式的数据,给人以清晰、直观的方式显示数据的结构和内容,并且提供各种操作函数,便于直接对数据进行编辑操作,为更好的了解数据的结构提供了极大的帮助。我也是在工作中,发现调用链信息、日志信息等都可以利用react-json-view来更好的展示这些数据,从而认识了RJV。