Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
react-json-view-lite
Advanced tools
JSON viewer component for React focused on performance for large volume input while still providing few customiziation features
npm install --save react-json-view-lite
shouldInitiallyExpand
has different name shouldExpandNode
in order to emphasize that it will be called every time properties change.pointer
and expander
are no longer usedcollapseIcon
, expandIcon
, collapsedContent
styles in order to customize expand/collapse icon and collpased content placeholder which were previously hardcode to the ▸
, ▾
and ...
.
Default style values use ::after
pseudo-classes to set the content.import * as React from 'react';
import { JsonView, allExpanded, darkStyles, defaultStyles } from 'react-json-view-lite';
import 'react-json-view-lite/dist/index.css';
const json = {
a: 1,
b: 'example'
};
const App = () => {
return (
<React.Fragment>
<JsonView data={json} shouldExpandNode={allExpanded} style={defaultStyles} />
<JsonView data={json} shouldExpandNode={allExpanded} style={darkStyles} />
</React.Fragment>
);
};
export default App;
Please note that in JavaScript, an anonymous function like function() {}
or () => {}
always creates a different function every time component is rendered, so you might need to use
useCallback React Hook for the shouldExpandNode
parameter or extract the function outside the functional component.
https://anyroad.github.io/react-json-view-lite/
Name | Type | Default Value | Description |
---|---|---|---|
data | Object | Array<any> | Data which should be rendered | |
style | StyleProps | defaultStyles | Optional. CSS classes for rendering. Library provides two build-in implementations: darkStyles , defaultStyles (see below) |
shouldExpandNode | (level: number, value: any, field?: string) => boolean | allExpanded | Optional. Function which will be called during initial rendering for each Object and Array of the data in order to calculate should if this node be expanded. Note that this function will be called again to update the each node state once the property value changed. level startes from 0 , field does not have a value for the array element. Library provides two build-in implementations: allExpanded and collapseAllNested (see below) |
clickToExpandNode | boolean | false | Optional. Set to true if you want to expand/collapse nodes by clicking on the node itself. |
Name | Type | Description |
---|---|---|
defaultStyles | StyleProps | Default styles for light background |
darkStyles | StyleProps | Default styles for dark background |
allExpanded | () => boolean | Always returns true |
collapseAllNested | (level: number) => boolean | Returns true only for the first level (level=0 ) |
Name | Type | Description |
---|---|---|
container | string | CSS class name for rendering parent block |
basicChildStyle | string | CSS class name for property block containing property name and value |
collapseIcon | string | CSS class name for rendering button collapsing Object and Array nodes. Default content is ▾ . |
expandIcon | string | CSS class name for rendering button expanding Object and Array nodes. Default content is ▸ . |
collapsedContent | string | CSS class name for rendering placeholder when Object and Array nodes are collapsed. Default contents is ... . |
label | string | CSS class name for rendering property names |
clickableLabel | string | CSS class name for rendering clickable property names (requires the clickToExpandNode prop to be true) |
nullValue | string | CSS class name for rendering null values |
undefinedValue | string | CSS class name for rendering undefined values |
numberValue | string | CSS class name for rendering numeric values |
stringValue | string | CSS class name for rendering string values |
booleanValue | string | CSS class name for rendering boolean values |
otherValue | string | CSS class name for rendering all other values except Object, Arrray, null, undefined, numeric, boolean and string |
punctuation | string | CSS class name for rendering , , [ , ] , { , } |
noQuotesForStringValues | boolean | whether or not to add double quotes when rendering string values, default value is false |
Here is the size benchmark (using bundlephobia.com) against similar React libraries (found by https://www.npmjs.com/search?q=react%20json&ranking=popularity):
Library | Bundle size | Bundle size (gzip) | Dependencies |
---|---|---|---|
react-json-view-lite | |||
react-json-pretty | |||
react-json-inspector | |||
react-json-tree | |||
react-json-view | |||
react-json-tree-viewer |
Performance was mesaured using the react-component-benchmark library. Every component was rendered 50 times using the 300Kb json file as data source, please refer to source code of the benchmark project. All numbers are in milliseconds. Tests were performed on Macbook Air M1 16Gb RAM usging Chrome v96.0.4664.110(official build, arm64). Every component was tested 2 times but there was no significant differences in the results.
Library | Min | Max | Average | Median | P90 |
---|---|---|---|---|---|
react-json-view-lite | 81 | 604 | 195 | 82 | 582 |
react-json-pretty | 22 | 59 | 32 | 24 | 56 |
react-json-inspector | 682 | 1 109 | 758 | 711 | 905 |
react-json-tree | 565 | 1 217 | 658 | 620 | 741 |
react-json-view | 1 403 | 1 722 | 1529 | 1 540 | 1 631 |
react-json-tree-viewer | 266 | 663 | 320 | 278 | 455 |
As you can see react-json-pretty
renders faster than other libraries but it does not have ability to collapse/expand nested objects so it might be good choice if you need just json syntax highlighting.
MIT © AnyRoad
FAQs
JSON viewer component for React focused on performance for large volume input while still providing few customiziation features
We found that react-json-view-lite demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.