A
JSON.stringify()React component utility
When debugging or building examples for React component libraries, I often want to use a component to calls JSON.stringify() on the React props object, so I can display that object in the browser.
npm install react-stringify
See this CodeSandbox for an in-browser example.
Basic usage is as follows:
import React from 'react'
import ReactDOM from 'react-dom'
import Stringify from 'react-stringify'
const Example = props => <Stringify value={props} />
ReactDOM.render(<Example a={1} b={2} c={3} />, document.getElementById('app'))
// =>
//
// <pre>{
// "a": 1,
// "b": 2,
// "c": 3
// }</pre>As seen in the previous example, Stringify will stringify the value prop. If you don't pass it one, or value is undefined, it will return null (in other words, render nothing).
Stringify supports a space prop. The default is two spaces, but you could use tabs ('\t') or something like this if you're feeling wild:
<Stringify value={{ foo: 'foo', bar: 'bar' }} space="💩" />
// =>
//
// <pre>{
// 💩💩"foo": "foo",
// 💩💩"bar": "bar"
// }</pre>By default, JSON.stringify() ignores functions. If you would like to stringify your object with functions, try the following replacer prop:
<Stringify
value={{ foo: () => 'foo', bar: 'bar' }}
replacer={(key, value) => {
return typeof value === 'function' ? '[Function]' : value
}}
/>
// =>
//
// <pre>{
// "foo": "[Function]",
// "bar": "bar"
// }</pre>Stringify renders the output of JSON.stringify() in <pre> tag by default, but you can override this by supplying any of the following render props: component, render, or children. See the following example and/or the @macklinu/render-props README for more information.
<Stringify
value={{ a: 1, b: 2, c: 3 }}
render={string => {
return (
<div>
<span>My Custom Render Function</span>
<pre>{string}</pre>
</div>
)
}}
/>
// =>
//
// <div>
// <span>My Custom Render Function</span>
// <pre>{
// "foo": "foo",
// "bar": "bar"
// }</pre>
// </div>This component accepts the following props, which are simply passed through to JSON.stringify():
valuereplacerspace
The MDN JSON.stringify() parameter documentation explains what valid parameters types are and their default values.
The Stringify component also accepts the following render props:
componentrenderchildren
See the @macklinu/render-props README documentation for more information.
Thanks goes to these wonderful people (emoji key):
Macklin Underdown 💻 |
|---|
This project follows the all-contributors specification. Contributions of any kind welcome!