私は ReactJS を使用しており、アプリの一部にはきれいに印刷された JSON が必要です。
次のような JSON を取得し、それをブラウザ コンソールで{ "foo": 1, "bar": 2 }
実行するときれいに印刷されますが、これをこの React スニペットで使用すると次のようになります。JSON.stringify(obj, null, 4)
render: function() {
var json = this.getStateFromFlux().json;
return (
<div>
<JsonSubmitter onSubmit={this.onSubmit} />
{ JSON.stringify(json, null, 2) }
</div>
);
},
次のような全体的な JSON をレンダリングします"{ \"foo\" : 2, \"bar\": 2}\n"
。
これらの文字を適切に解釈するにはどうすればよいでしょうか? {
ベストアンサー1
BR
結果の文字列にタグを適切に挿入するか、たとえばPRE
タグを使用しての書式設定が保持されるようにする必要がありますstringify
。
var data = { a: 1, b: 2 };
var Hello = React.createClass({
render: function() {
return <div><pre>{JSON.stringify(data, null, 2) }</pre></div>;
}
});
React.render(<Hello />, document.getElementById('container'));
動作例。
アップデート
class PrettyPrintJson extends React.Component {
render() {
// data could be a prop for example
// const { data } = this.props;
return (<div><pre>{JSON.stringify(data, null, 2) }</pre></div>);
}
}
ReactDOM.render(<PrettyPrintJson/>, document.getElementById('container'));
ステートレス機能コンポーネント、React .14 以上
const PrettyPrintJson = ({data}) => {
// (destructured) data could be a prop for example
return (<div><pre>{ JSON.stringify(data, null, 2) }</pre></div>);
}
または、 ...
const PrettyPrintJson = ({data}) => (<div><pre>{
JSON.stringify(data, null, 2) }</pre></div>);
メモ / 16.6+
(メモを使うのもいいかもしれません、16.6以降)
const PrettyPrintJson = React.memo(({data}) => (<div><pre>{
JSON.stringify(data, null, 2) }</pre></div>));