本文主要记录在VCA中使用computed与watch
computed
在这段示例中实现一个数据过滤搜索的功能。根据用户在输入框中输入的文本对列表中的数据进行过滤
UserSearch.js
import { computed, ref } from 'vue'
function UseSearch(datalist) {
const keyword = ref('')
const mydatalist = computed(() => datalist.value.filter((item) => item.includes(keyword.value)))
keyword.value = ''
return {
mydatalist,
keyword
}
}
export default UseSearch
App.vue
<template>
<div>过滤</div>
<input v-model="keyword">
<ul>
<li v-for="data in mydatalist">{{ data }}</li>
</ul>
</template>
<script>
import { reactive, ref} from 'vue';
import useSearch from './UseSearch.js'
export default {
setup() {
const datalist=ref([])
setTimeout(datalist.value=['fk98h', 'bjhiosw', 'oitd', 'j7jh', 'g98', 'zxvhp', 'h4dh09'],2000)
return {
...useSearch(datalist)
}
}
}
</script>
watch
通过绑定输入框与下来菜单来演示watch功能
<template>
<div>watch</div>
<input type="text" v-model="mytext">
<select v-model="myselect">
<option v-for="s in myoption">{{ s }}</option>
</select>
</template>
<script>
import { reactive, ref, watch } from 'vue';
export default {
setup() {
const mytext = ref("")
const myselect = ref("")
const myoption = ref(["a", "b", "c"])
watch([mytext,myselect], (newValue, oldValue) => {
console.log("监控watch", newValue, oldValue)
})
return {
mytext,
myselect,
myoption
}
}
}