要素内でオブジェクトをレンダリングしようとしています(パネル要素react-bootstrap
)。React.js内のオブジェクトをループしてレンダーする
import React, { PropTypes } from 'react';
import { Panel } from 'react-bootstrap';
const NetworkDetail = React.createClass({
render() {
return (
<Panel header="Network Details" bsStyle="info">
{this.props.dataDetail && Object.keys(this.props.dataDetail).map(function(detail, id) {
return <span key={id}>{this.props.dataDetail[detail]}</span>;
}.bind(this))}
</Panel>
)
}
})
export default NetworkDetail
しかし、これは機能しません。 (:鍵{自己}を持つオブジェクトが見つかりました)オブジェクトが反応子 として有効ではありません:スローエラーが
キャッチされない不変違反です。子供のコレクション をレンダリングする場合は、代わりに配列を使用するか、またはReactアドオンの createFragment(オブジェクト)を使用してオブジェクトをラップします。 'NetworkDetail'のレンダリング方法 を確認してください。私は理解していない何
は私が
return <span key={id}>{this.props.dataDetail.myProperty}</span>;
を使用している場合、それが動作することです。
オブジェクトのすべてのプロパティと値をレンダリングするにはどうすればよいですか?
'props.dataDetails'のキーのどれも' this.props.dataDetail [detail] 'のオブジェクトを解決できないでしょうか? – SimpleJ
ああスナップ、 'dataDetail'オブジェクトは実際にオブジェクトである' _links'という名前のプロパティを持っています...(アプリケーションはREST HATEOASバックエンドを消費します)。この '_links'オブジェクトが原因である場合、どのように取り除かなければなりませんか?たぶんunderscore.js(実際にはアンダースコアを使ってデータを再フォーマットしています)? – Clafou
Underscoreの 'omit'関数を使って' _links'をフィルタリングすることができます。より良い選択肢は、レンダーしたいキーのリストを作成し、アンダースコアの 'pick'関数を代わりに使用することです。参照:http://underscorejs.org/#omit – SimpleJ