私はVue components上に読み取り、データがやや紛らわしい機能にする必要がある理由のその説明を見つけています:なぜコンポーネントデータを関数にする必要がありますか?
ルート・インスタンス
var vm = new Vue({
el: '#example',
data: {
message: 'here data is a property'
}
})
コンポーネント
var vm = new Vue({
el: '#example',
data: function() {
return {
counter: 0
}
}
})
Vueのドキュメントでは、グローバルなカウンタ変数を各コンポーネントに割り当て、それぞれのコンポーネントが同じデータを共有していることに驚かされました...また、彼らはなぜここで関数を使用しているのかを説明しません。
var data = { counter: 0 }
Vue.component('simple-counter', {
template: '<div>{{ counter }}</div >',
data: function() {
return data
}
})
データは、現在共有されているもちろん
<simple-counter></simple-counter>
<simple-counter></simple-counter>
<simple-counter></simple-counter>
あなたのデータソースとしてグローバルオブジェクトを参照するとき、それはコンポーネントが自分のデータを持っていないことは驚きではありません。これは、データをプロパティとして持つルートVueインスタンスにも当てはまります。
var mydata = { counter: 0 }
var vm1 = new Vue({
el: '#example1',
data: mydata
})
var vm2 = new Vue({
el: '#example2',
data: mydata
})
なぜ、コンポーネントがデータプロパティを持つことができないのかという疑問が残っていますか?
その記事は問題を明確にしてくれました、ありがとう:) – Kokodoko
素晴らしい!私はVueを学び始めたときにその質問にも直面していた –