这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战vue
setup
函数用法,能够代替Vue2中的data和method属性,直接把逻辑加在setup中react
ref
函数在temlate中用的变量须要用ref包装下数组
return出去的数组和方法在模板中才可使用markdown
setup() {
const girls = ref(["小红", "小英", "晓红"]);
const selectGirl = ref("");
const selectGirlFun = (index) => {
selectGirl.value = girls.value[index];
};
return {
girls,
selectGirl,
selectGirlFun,
};
},
复制代码
reactive
函数的用法,他的参数不是基本类型,而是一个object,这样就你不用在方法中写.value
了,同时放回data
就能够setup() {
const data = reactive({
girls: ["a", "b", "c"],
selectGirl: "",
selectGirlFun: (index) => {
console.log(1111)
data.selectGirl = data.girls[index];
},
});
return {
data
};
},
复制代码
可是这样写,必须在template
使用变量和方法的时候须要加上data.
,这样显然是不符合咱们开发的编码习惯的,
咱们能够想到在return的时候将data解构使用...
拓展运算符,可是这样解构后就成了普通变量,再也不具备响应式的能力,
因此咱们须要使用toRefs()函数app
toRefs
函数的用法setup() {
const data = reactive({
girls: ["a", "b", "c"],
selectGirl: "",
selectGirlFun: (index) => {
console.log(1111)
data.selectGirl = data.girls[index];
},
});
const refData = toRefs(data);
return {
...refData,
};
}
复制代码
如何选择ref和reactive,两种方法均可以,他们均可以生成响应式对象,我的选择reactive
函数
对于vue的生命周期想必你们都非熟悉,在项目中很是经常使用post
生命周期:伴随着生命周期,给用户使用的函数,操控生命周期,主要是操控钩子函数。ui
beforeCreate
和created
以前执行。建立的是data和methodVue2--------------vue3
beforeCreate -> setup()
created -> setup()
beforeMount -> onBeforeMount
mounted -> onMounted
beforeUpdate -> onBeforeUpdate
updated -> onUpdated
beforeDestroy -> onBeforeUnmount
destroyed -> onUnmounted
activated -> onActivated
deactivated -> onDeactivated
errorCaptured -> onErrorCaptured
复制代码
vue3的生命周期函数在使用前须要先引入编码
import {
reactive,
toRefs,
onMounted,
onBeforeMount,
onBeforeUpdate,
onUpdated,
} from "vue";
复制代码
setup() {
onMounted(() => {
console.log('mounted')
})
onUpdated(() => {
console.log('updated')
})
onRenderTriggered((event) => {
console.log(event)
})
}
复制代码
onRenderTracked
和onRenderTriggered
钩子函数的使用onRenderTracked
=>状态跟踪,他会跟踪页面上全部响应式变量和方法的状态,也就是咱们return出去的值,
只要页面有update的状况,他就会跟踪,而后生成一个event对象,咱们能够经过event对象来查找程序所存在的问题
一样须要先引入url
import { .... ,onRenderTracked,} from "vue";
复制代码
再在setup函数中使用
onRenderTracked((event) => {
console.log("状态跟踪组件----------->");
console.log(event);
});
复制代码
onRenderTriggered
=> 状态触发,不会跟踪每个值,而是给你变化值的信息,而且新值和旧值都会明确的展现出来
若是把onRenderTracked
是每一个值都追踪,而onRenderTriggered
是精准追踪,进行针对性调试
使用时咱们一样须要导入
import { .... ,onRenderTriggered,} from "vue";
onRenderTriggered((event) => {
console.log("状态触发组件--------------->");
console.log(event);
});
- key 那边变量发生了变化
- newValue 更新后变量的值
- oldValue 更新前变量的值
- target 目前页面中的响应变量和函数
复制代码
这样看来onRenderTriggered
跟watch有一丝丝像watch