1.计算属性
vue3中可以继续使用vue2的语法,但是主要是可以用组合式api去写。
1.vue2写法
export default {
data() {
return {
phonename:'华为手机',
price:5000
}
},
methods: {
updateName(){
this.phonename = '苹果手机'
}
},
computed:{
// 计算属性在定义的时候是方法,里面返回结果
// 在使用时,是当做属性在用
// phoneInfo(){
// return this.phonename+'-'+this.price
// },
// 如果计算属性需要修改,要定义完整形式
phoneInfo:{
get(){
return this.phonename+'-'+this.price
},
set(val){
let arr = val.split('-')
this.phonename = arr[0]
this.price = parseInt(arr[1])
}
}
}
}
2.组合式api写法
// 导入组合式API
import {computed, ref} from 'vue'
export default {
// vue3目前推崇的是组合式API写法
setup() {
// 定义数据
const phonename = ref('华为手机')
const price = ref(5000)
//定义方法
const updateName = ()=>{
phonename.value = '苹果手机'
}
//定义计算属性
// 定义只读的计算属性
// const phoneInfo = computed(()=>{
// return phonename.value+'-'+price.value
// })
// 定义可写的计算属性
const phoneInfo = computed({
get(){
return phonename.value+'-'+price.value
},
set(val){
let arr = val.split('-')
phonename.value = arr[0]
price.value = parseInt(arr[1])
}
})
//返回模板中要用的数据
return {
phonename,
price,
updateName,
phoneInfo
}
}
}
2.侦听器
// 引入组合式API watch 和 watchEffect
import {ref,reactive, watch, watchEffect} from 'vue'
export default {
// Vue3中的侦听器
setup() {
let money = ref(10000)
let stu = reactive({
name:'张三',
age:20,
car:{
name:'奔驰',
price:50
}
})
// watch方法的参数分别是:
// 第一个参数:监视的成员
// 第二个参数:回调函数
// 第三个参数:配置对象 (可以省略)
// 简单用法:一上来没有立刻执行
// watch(money,(nval,oval)=>{
// console.log(nval,oval);
// })
// 完整用法:加上第三个参数,配置对象
watch(money,(nval,oval)=>{
console.log(nval,oval);
},{
//立刻执行
immediate:true,
})
// 监视reactive的数据,默认就开启深度监视,并且无法关闭
// watch(stu,(nval,oval)=>{
// console.log(nval,oval);
// })
// 对于reactive的数据,可以采用监视部分属性
// 监视对象身上的属性,推荐用下面的方式
watch(()=>stu.name,(nval,oval)=>{
console.log(nval,oval);
})
// 如果监视的是reactive里面的对象属性,默认是不开启深度监视的,需要手动开启
watch(()=>stu.car,(nval,oval)=>{
console.log(nval,oval);
},{
deep:true
})
//watchEffect监听器,只有一个回调函数参数,并且没有参数
// 特点:
// 1.默认会执行一次
// 2.不需要明确监视谁,回调函数里面用到了谁,谁变了,就会重新执行回调函数。
watchEffect(()=>{
console.log('我是watchEffect');
let m = money.value
let name = stu.name
})
return{
money,
stu
}
}
};
3.过滤器
Vue3推荐我们使用方法或计算属性的方式,实现之前过滤器的效果,所以vue3移除了过滤器。