react-stringify
v1.0.0
Published
A JSON.stringify() React component utility
Downloads
174
Maintainers
Readme
react-stringify
A
JSON.stringify()
React component utility
Motivation
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.
Installation
npm install react-stringify
Usage
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>
Examples
See this CodeSandbox for an in-browser example.
API Reference
Stringify
This component accepts the following props, which are simply passed through to JSON.stringify()
:
value
replacer
space
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:
component
render
children
See the @macklinu/render-props
README documentation for more information.
Contributors
Thanks goes to these wonderful people (emoji key):
| Macklin Underdown💻 ⚠️ 📖 | | :---: |
This project follows the all-contributors specification. Contributions of any kind welcome!