created
ライフサイクルフックを使用して、コンポーネントのデータプロパティを設定しようとしています。以下は私の単一ファイルコンポーネントです。私は現在、このコードを実行しているときにコンソールに"TypeError: Cannot read property 'summary' of undefined"
が表示されています。これはテンプレートがcreated
からの移入オブジェクトではなく、data
プロパティで宣言された空のオブジェクトとしてforecastData
で動作していることを示しています。 data
プロパティを完全に削除すると、TypeError: Cannot read property 'currently' of undefined
が表示されます。明らかに、私はここで何か基本的なものを欠いている。VueJSライフサイクルフックでデータを設定する方法
<template>
<div>
<p>
<router-link to="/">Back to places</router-link>
</p>
<h2>{{forecastData.currently.summary}}</h2>
<router-link :to="{ name: 'forecast' }">Forecast</router-link>
<router-link :to="{ name: 'alerts' }">Alerts</router-link>
<hr>
<router-view></router-view>
</div>
</template>
<script>
export default {
name: 'CurrentWeather',
data() {
return {
forecastData: {}
}
},
created: function() {
this.$http.get('/api/forecast/boston').then((response) => {
this.forecastData = response.data;
}, (err) => {
console.log(err)
});
}
}
</script>
<style scoped>
</style>
ありがとう! {現在::{概要:ヌル}} 'forecastDataに更新'、それが動作します。これは、コンポーネントの作成時にデータを非同期にフェッチして設定する適切な方法ですか?何をやっている – MattDionis
@MattDionisはあなただけのコンポーネントが最初に実装されているときに存在しないかもしれないネストされたプロパティについて注意する必要があり、完全に罰金です。 – Bert