この質問と私たちは否定かもしれは、ちょっと、あなたは実際には、我々は真剣にそれの理由については考えていない、まあ嫌いではないだろう、間違った顔を与えました。まずコンパイルするおかげで、残りのマップ・エラーに。図古い鉄に興味を持っていないが、結論を見るために下に直接引くことができます
エラー:
コード:
第二に、私は、(あなたが結論を見て、絵をスキップすることができます)散歩に引き出すために、コードを簡素化
奇妙な場所:
行は、始まるショットにエラーをスローこの行をコメントアウトし、残りは正常に実行されることを著者に
理由:
まず、我々はthis.state.detailに注意し、デフォルト値が与えられた空の文字列を。
なぜ私が故意に空の文字列を説明すればいい
次のコードはあなたの注意を持っています
上記の画像は本質です。
ページが未定義の文字列にレンダリングされるようにthis.state.detail.title最初の訪問は、実際には、返品は未定義、.TITLE「」レンダリングされました
しかしthis.state.detail.author.loginnameは異なり、this.state.detail.authorすでにTypeError例外を投げる、undefined.loginnameに相当する、定義されていません
結論:
空の文字列へのアクセスのプロパティはundefinedを返します
例外TypeError未定義のアクセスのプロパティ
TypeError例外を取り除くためにプロパティへのアクセスには存在しないNULL
「」、ヌルに注意して、一種の未定義のプロパティを取得するときに生成された結果の、結果が制御不能を防止するためにどのように表示されます
ソリューション:
エラーを防ぐために行うには互換性のプロパティを使用する前に、直接スタックページをスローされます
例如:this.state.detail.author.loginname我们可以改为this.state.detail.author && this.state.detail.author.loginname