私はVue.js
およびAxios
。コンポーネント内で使用するときにdata
オプションを機能させる方法はよくわかりません。
なぜテストが機能しないのですか?
コンソールに次のエラーが表示されます。
[Vue warn]: The "data" option should be a function that returns a per-instance value in component definitions. [Vue warn]: Property or method "symbols" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option. (found in root instance)
私の簡単なテスト:
マイデータ(簡潔にするために省略):
[{"id":1, "name": "Airfield"}, {"id":2, "name": "Ship Yard"}]
私のコンポーネント:
Vue.component('symbols-table', {
template: '<h1>Hello World</h1>',
data: {
symbols: []
},
created: function(){
axios.get('symbols.json').then(response => this.symbols = response.data);
}
});
Vueインスタンス:
var app = new Vue({ el: '#app' });
私のHTML:
<symbols-table>
<ul><li v-for="symbol in symbols">{{symbol.name}}</li></ul>
</symbols-table>
エラーが言っているように:
「データ」オプションは関数でなければなりません
コンポーネントでは、 dataはfunction である必要があります。リアクティブな方法でDOMで使用されるデータ構造:
Vue.component('symbols-table', {
template: '<h1>Hello World</h1>',
data: function() {
return {
symbols: []
}
},
created: function(){
axios.get('symbols.json').then(response => this.symbols = response.data);
}
});
Vueコンポーネント内のdata
は、 Vue.jsの一般的な落とし穴 で説明されているように、オブジェクトを返す関数でなければなりません。
次のように簡単に入力できます。
data() {
return {
...... tra-ta-ta.......
}
},