computed
例
<template>
<div class="box">
<input type="text" v-model="keyCode" placeholder="筛选" />
<ul>
<li v-for="(item, index) in filterCode" :key="index">{
{ item }}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
keyCode: "",
list: ["apple", "huawei", "sony", "oppo", "vivo"],
};
},
computed: {
filterCode() {
var arr = [];
for (let i in this.list) {
if (this.list[i].indexOf(this.keyCode) != -1) {
arr.push(this.list[i]);
}
}
return arr;
},
},
};
</script>
watch
例
<template>
<div class="box">
<input type="text" v-model="firstName" placeholder="姓" />
<input type="text" v-model="lastName" placeholder="名" />
{
{ fullName }}
</div>
</template>
<script>
export default {
data() {
return {
firstName: "",
lastName: "",
fullName: "",
};
},
watch: {
firstName(value) {
this.fullName = `${
value}${
this.lastName}`;
},
lastName(value) {
this.fullName = `${
this.firstName}${
value}`;
},
},
};
</script>
computed
- データキャッシュに依存し、データが変更されたときにのみ実行します
- 非同期はサポートされていません。計算に非同期操作がある場合は無効であり、データの変更を監視することはできません。
- データ関数で変数を定義する必要はありません
watch
- データ変更の非同期操作をサポート
- 2つのパラメーターを受け取ります。最初のパラメーターは最新の値で、2番目のパラメーターは入力前の値です。
- 監視データは、データで宣言されているか、親コンポーネントによって渡された小道具のデータである必要があります
- 大きなパフォーマンスオーバーヘッドが発生する