これはかなり共通の問題です。最終的にそのプロパティの1つを通して自身を参照するオブジェクトをプリントアウトしようとしているため、Converting circular structure to JSON(...)
がスローされます。ここで
は、あなたがこの問題を得ることができる最も簡単な方法の一つのJSFiddleです:
var a = {
b: null
};
// Prints fine
console.log(JSON.stringify(a, null, 3));
a.b = a;
// Throws an error, as a.b *is* a
console.log(JSON.stringify(a, null, 3));
あなたがJSON.stringify
を呼び出すと、ブラウザは枝のように各プロパティを下って行く、大きな木のようなあなたのオブジェクトを通過し、それを文字列に変換します。 上記の例では、最初にプロパティb
がヌルになっています。その結果、「文字列化」が成功します。我々はa
に自分自身をa.b
を設定すると、私たちは今、木のこの種の取得:
a
|-b: a
|-b: a
|-b: a
...
を構造は、オブジェクト参照自体ので、このように円形です。永遠に続くので、JSONとして書く方法はありません。そのため、エラーがスローされます。
あなたの特定の問題については、Reactオブジェクトがその子を参照する親を参照しているため、これはReactで起こっています。
だから、(this.props
は、問題の原因の一部であるプロパティchildren
を持っている)このような理由のためにあなたの例ではthis
またはthis.props
にJSON.stringify
を使用することはできません。
> JSON.stringify(this.state);
"{"selected":0}"
編集:
あなたはそれだとあなたが文字列化this.state
は、他を参照していない通常のオブジェクトは、オブジェクトを反応させることができることがわかりますあなたがあるために最善のことができるものをせずにただconsole.log
をしますJSON.stringify
:
console.log("this.props.children[this.state.selected]---->", this.props.children[this.state.selected]);
あなたはconsole.log
に複数の引数を追加し、コンマでそれらを分離することができ、その後、ブラウザのコンソール自体は、それを印刷してください視認可能な形式で表示されます。
この値を印刷する方法とJSON.stringify(this.props)を参照してください。 –
@texirv - 自分で見て印刷するだけの場合は、JSON.stringifyする必要はありません。あなたの 'console.log'に追加するだけで、ブラウザコンソールはそれを見えるようにします。私の編集された答えを見てください。 –
あなたはこの1つで私を助けることができますhttp://stackoverflow.com/questions/40498339/same-tab-content-is-being-displaying-twice –