Vueデータ関連属性のまとめ
3516 ワード
vueのデータ関連属性は簡単ではなく、同じ実装で互いに変換され、どの属性を使うべきか分からないこともあります.次に,vueを使用する初心者の参考にするために,各種データ関連属性の使用シーンと制限を整理する.
まず、データに関する属性を整理します. data v-model computed props watch
data
data属性はvueの中で最も簡単なデータ属性であり、このvueインスタンスを表すデータであり、その定義方法は以下の通りである.
参照方法は次のとおりです.
v-model
v-modelは、フォームコントロールまたはコンポーネント上で双方向バインド関係を確立することができ、本質的には文法糖であり、data属性と組み合わせて使用されます.
双方向バインドの定義方法は次のとおりです.
これは文法糖にすぎず、本質的にはinputコントロールをバインドしたvalue属性とinputイベントである.
コンポーネントの本質は次のように実現されます.
v-modelのカスタムコンポーネントでの使用はinputイベントに自動的にバインドされ、カスタムコンポーネントはvalueの変更を検出すると、inputイベント:
computed
テンプレートに複雑な論理をバインドする計算プロパティ.依存するプロパティが変更されると、計算プロパティも変更されます.
定義方法:
計算プロパティのプロパティ「依存するプロパティが変更されると、その計算プロパティも変更されます」は、関数で実現することもできます.関数方式で実装されるコードは次のとおりです.
両方の方法の結果は同じですが、計算プロパティは依存キャッシュに基づいており、関数の更新プロパティ値を毎回実行する必要がなく、関連する依存が変更された場合にのみ値を再取得します.
属性を計算する参照方法はdata属性と同じであり、テンプレート内のデータバインドとしてもコンポーネント属性にバインドしてもよい.ここでは説明しない.
props
propsは、親コンポーネントがサブコンポーネントにデータを渡すために使用され、コンポーネントで定義および使用方法は次のとおりです.
注意:propsではアルパカネーミング法、コンポーネントプロパティでは短横線ネーミング法です.
watch
watchは,属性送信の変化を観察した後,追加処理を行うために用いられる.
computed属性との違いは,作用対象が異なり,watchは変化の源を観察し,computed属性は変化の目標であり,もちろん両者は互いに変換できる.両者がどのように取捨選択されるかは、変化するソースとターゲットのどの部分の属性がより多く、複数のソース属性の変化が1つのターゲット属性に影響を与える場合はcomputedを使用することを推奨する.逆に、1つのソース属性の変化が複数のターゲット属性に影響を及ぼす場合は、watchを推奨します.
first nameとlast nameを組み合わせたfull nameを実現するには、watchによって実現することができる.
computedプロパティで実装すると、より簡素になります.
まとめ
Vueにはデータ関連の属性が多く、初心者は一時的にどのように選択すればいいか分からない.本稿では,各属性が設計された目的,使用シーン,および特性,さらにはより深い実装原理を知ることができ,これにより,属性の大部分が選択された場合に対応できる.
まず、データに関する属性を整理します.
data
data属性はvueの中で最も簡単なデータ属性であり、このvueインスタンスを表すデータであり、その定義方法は以下の通りである.
const app = new Vue({
data: {
message: '...',
}
})
参照方法は次のとおりです.
app.message = '...' // template , : title
// {{}}
{{ message }}
注意一下,Vue组件定义时,data必须是function:
const Component = Vue.extend({
data: function () {
return { a: 1 }
}
})
v-model
v-modelは、フォームコントロールまたはコンポーネント上で双方向バインド関係を確立することができ、本質的には文法糖であり、data属性と組み合わせて使用されます.
双方向バインドの定義方法は次のとおりです.
// ,
これは文法糖にすぎず、本質的にはinputコントロールをバインドしたvalue属性とinputイベントである.
// v-model
コンポーネントの本質は次のように実現されます.
// v-model
v-modelのカスタムコンポーネントでの使用はinputイベントに自動的にバインドされ、カスタムコンポーネントはvalueの変更を検出すると、inputイベント:
this.$emit('input', newValue)
をトリガーしてvalueの変更を親コンポーネントのsomethingプロパティに渡すことができます.computed
テンプレートに複雑な論理をバインドする計算プロパティ.依存するプロパティが変更されると、計算プロパティも変更されます.
定義方法:
const app = new Vue({
computed: {
reversedMessage() {
return ...
}
}
})
計算プロパティのプロパティ「依存するプロパティが変更されると、その計算プロパティも変更されます」は、関数で実現することもできます.関数方式で実装されるコードは次のとおりです.
const app = new Vue({
methods: {
reversedMessage() {
return ...
}
}
})
{{ reversedMessage() }}
両方の方法の結果は同じですが、計算プロパティは依存キャッシュに基づいており、関数の更新プロパティ値を毎回実行する必要がなく、関連する依存が変更された場合にのみ値を再取得します.
属性を計算する参照方法はdata属性と同じであり、テンプレート内のデータバインドとしてもコンポーネント属性にバインドしてもよい.ここでは説明しない.
props
propsは、親コンポーネントがサブコンポーネントにデータを渡すために使用され、コンポーネントで定義および使用方法は次のとおりです.
Vue.component('child', {
props: ['myMessage'],
})
注意:propsではアルパカネーミング法、コンポーネントプロパティでは短横線ネーミング法です.
watch
watchは,属性送信の変化を観察した後,追加処理を行うために用いられる.
computed属性との違いは,作用対象が異なり,watchは変化の源を観察し,computed属性は変化の目標であり,もちろん両者は互いに変換できる.両者がどのように取捨選択されるかは、変化するソースとターゲットのどの部分の属性がより多く、複数のソース属性の変化が1つのターゲット属性に影響を与える場合はcomputedを使用することを推奨する.逆に、1つのソース属性の変化が複数のターゲット属性に影響を及ぼす場合は、watchを推奨します.
first nameとlast nameを組み合わせたfull nameを実現するには、watchによって実現することができる.
var vm = new Vue({
el: '#demo',
data: {
firstName: 'Foo',
lastName: 'Bar',
fullName: 'Foo Bar'
},
watch: {
firstName: function (val) {
this.fullName = val + ' ' + this.lastName
},
lastName: function (val) {
this.fullName = this.firstName + ' ' + val
}
}
})
computedプロパティで実装すると、より簡素になります.
var vm = new Vue({
el: '#demo',
data: {
firstName: 'Foo',
lastName: 'Bar'
},
computed: {
fullName: function () {
return this.firstName + ' ' + this.lastName
}
}
})
まとめ
Vueにはデータ関連の属性が多く、初心者は一時的にどのように選択すればいいか分からない.本稿では,各属性が設計された目的,使用シーン,および特性,さらにはより深い実装原理を知ることができ,これにより,属性の大部分が選択された場合に対応できる.