GitHub - alexkuz/react-json-tree: React JSON Viewer Component, Extracted from redux-devtools (original) (raw)


This package was merged into redux-devtools monorepo. Please refer to that repository for the latest updates, issues and pull requests.


react-json-tree

React JSON Viewer Component, Extracted from redux-devtools. Supports iterable objects, such as Immutable.js.

Usage

import JSONTree from 'react-json-tree' // If you're using Immutable.js: npm i --save immutable import { Map } from 'immutable'

// Inside a React component: const json = { array: [1, 2, 3], bool: true, object: { foo: 'bar' }, immutable: Map({ key: 'value' }) }

Result:

Check out examples directory for more details.

Theming

This component now uses react-base16-styling module, which allows to customize component via theme property, which can be the following:

Every theme has a light version, which is enabled with invertTheme prop.

const theme = { scheme: 'monokai', author: 'wimer hazenberg (http://www.monokai.nl)', base00: '#272822', base01: '#383830', base02: '#49483e', base03: '#75715e', base04: '#a59f85', base05: '#f8f8f2', base06: '#f5f4f1', base07: '#f9f8f5', base08: '#f92672', base09: '#fd971f', base0A: '#f4bf75', base0B: '#a6e22e', base0C: '#a1efe4', base0D: '#66d9ef', base0E: '#ae81ff', base0F: '#cc6633' };

Result (Monokai theme, dark background):

Advanced Customization

({ style: { ...style, textTransform: expanded ? 'uppercase' : style.textTransform } }) }} />

Customize Labels for Arrays, Objects, and Iterables

You can pass getItemString to customize the way arrays, objects, and iterable nodes are displayed (optional).

By default, it'll be:

<JSONTree getItemString={(type, data, itemType, itemString) => {itemType} {itemString}}

But if you pass the following:

const getItemString = (type, data, itemType, itemString) => ( // {type});

Then the preview of child elements now look like this:

Customize Rendering

You can pass the following properties to customize rendered labels and values:

<JSONTree labelRenderer={raw => {raw}} valueRenderer={raw => {raw}} />

In this example the label and value will be rendered with <strong> and <em> wrappers respectively.

For labelRenderer, you can provide a full path - see this PR.

More Options

Credits

Similar Libraries

License

MIT