react-json-view(看這篇就夠了)

?最近業(yè)務(wù)上需要用到j(luò)son可視化的需求,在這給大家安利一個前端頁面很好用的插件react-json-view


第一步:安裝插件npm install --save react-json-view 或者 yarn react-json-view,在這推薦大家在項目中用 yarn 安裝插件,yarn的出錯幾率比npm低很多。

第二步:import ReactJson from 'react-json-view';引入,以組件的形式直接使用<ReactJson src={my_important_json} theme="monokai" />,組件主要接受兩個參數(shù),src是想要展示的json數(shù)據(jù),還有個配置屬性,以對象的形式寫入,<ReactJson { ...this.state.jsonOptions } src={ this.state.payerData } />,

第三部:插件的所有配置參數(shù)

1.src(必須) :JSON Object

????默認值:無

????需要展示的JSON數(shù)據(jù)

2.name:string或false

????默認值:root

????JSON數(shù)據(jù)的根節(jié)點(用默認或指定的根節(jié)點包裹自己的數(shù)據(jù)),使用null或false沒有名字

3.theme:string

????默認值:rjv-default

????RJV支持base-16主題。更多主題參考

4.style:object

????默認值:{}

????可以通過style添加、修改樣式,可覆蓋主題默認提供的屬性

5.iconStyle:string

????默認值:triangle

????接受參數(shù):circle(圓)、triangle(三角形)、square(圓)

6.indentWidth:integer(整數(shù))

????默認值:4

????JSON嵌套對象的縮進值

7.collapsed:boolean或integer

????默認值:false

????當(dāng)設(shè)置為true,默認情況下,所有節(jié)點都將被折疊。使用整數(shù)值在特定深度折疊。

8.collapseStringsAfterLength:integer

????默認值:false

????這個就是超出內(nèi)容會變成…的功能。當(dāng)一個整數(shù)值被賦值時,字符串就會在這個長度后面接上省略號。可以通過單擊字符串值來展開和折疊字符串內(nèi)容

9.shouldCollapse:(field)=>{}

????默認值:false

回調(diào)函數(shù)來提供對默認情況下應(yīng)該折疊的對象和數(shù)組的控制。對象被傳遞給包含name, src, type(“數(shù)組”或“對象”)和namespace

10.displayObjectSize:boolean

????默認值:true

當(dāng)設(shè)置為true,對象和數(shù)組被標(biāo)記為大小。例如: { a: ‘a(chǎn)1’,b: ‘b1’ },會顯示2 items

11.displayDataTypes:boolean

????默認值:true

當(dāng)設(shè)置為true,數(shù)據(jù)類型會出現(xiàn)在數(shù)據(jù)的前綴值.例如: { a: 123, b: ‘b1’},會顯示{ a: int 123, b: string ‘b1’}

12.onEdit:(edit)=>{}

????默認值:false

????當(dāng)傳入回調(diào)函數(shù)時,edit功能已啟用。在編輯完成之后調(diào)用回調(diào)。

13.onAdd:(add)=>{}

????默認值:false

????當(dāng)傳入回調(diào)函數(shù)時,add功能已啟用。在完成添加之后調(diào)用回調(diào)。

14.onDelete:(delete)=>{}

????默認值:false

????當(dāng)傳入回調(diào)函數(shù)時,delete功能已啟用。在完成刪除之后調(diào)用回調(diào)。

15.onSelect:(select)=>{}

????默認值:false

????當(dāng)傳入函數(shù)時,單擊值將觸發(fā)onSelect方法將被調(diào)用。

下面貼出完整實例:


import React from 'react';

import ReactJson from 'react-json-view';

import { getPayer } from '@/service/allApi';

class Payer extends React.Component{

? constructor( props ) {

? ? super( props );

? ? this.state = {

? ? ? payerData: {},

? ? ? jsonOptions: {

? ? ? ? displayDataTypes: false,

? ? ? ? collapseStringsAfterLength: 20,

? ? ? ? onEdit: ( edit ) => {

? ? ? ? ? console.log('編輯' , edit);

? ? ? ? },

? ? ? ? onAdd: ( add ) => {

? ? ? ? ? console.log('新增' , add);

? ? ? ? }

? ? ? }

? ? }

? }

? componentDidMount() {

? ? this.getPayerData();

? }

? getPayerData = async () => {

? ? const res = await getPayer(1);

? ? if ( res.data.code === 0 ) {

? ? ? this.setState({

? ? ? ? payerData: res.data.data

? ? ? })

? ? }

? }

? render() {

? ? return (

? ? ? <div style={{ width: '100%' , height: '100%' , overflow: 'auto'}}>

? ? ? ? payer

? ? ? ? <ReactJson { ...this.state.jsonOptions } src={ this.state.payerData } />

? ? ? </div>

? ? )

? }

}

export default Payer;


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容