ネストされていない限り、Stateからデータを返すコンポーネントがあります。しかし、オブジェクト内で少し深く掘り下げる必要がある場合は、エラーが発生します。 "TypeError:プロパティ 'name'が未定義です。ネストされたオブジェクトに反応が返される
私は値があることを確信しています(チェックされたインスペクタと変数は確かに値を持っているので、コードに入れるものを知っていました)。より高い価値をもたらすが、より低い価値をもたらすのはなぜなのだろうか?
class Concert extends Component {
constructor(props) {
super(props);
this.state = ({
concert:''
})
}
componentDidMount(){
var concertid = `${REQ_URL}/${this.props.match.params.concertid}`;
fetch(concertid, {
method: 'GET'
})
.then(response => response.json())
.then(json => {
this.setState({
concert:json
})
})
}
render() {
return (
<div>
<Header />
<div className="concert">
<div className="venue">
//THIS IS THE PART THAT RETURNS ERROR
//this.state.concert.id returns a correct value
//POSITIVE this.state.concert.artist.name DOES CONTAIN VALUE
Venue: {this.state.concert.artist.name}
</div>
</div>
</div>
)
}
}
実際には未定義ですが、その時点ではthis.state.concert.idも正しくレンダリングされています。なぜ、1つは動作しますが、もう1つは動作しませんか?あなたは修正が正しく動作しました。 – homersheineken
'this.state.concert.SOMETHING.id'ではなく' this.state.concert.id'にアクセスしてください。コンサートが使用可能です(空の文字列です)。したがって、 'concert.id'は定義されていません。これはエラーではありません。 – Dekel