vue3-script-setup
1、setup
是vue3
新增的生命周期函数,它的加入主要是为了vue3
的组合式API
得以使用。
2、setup
位于beforeCreated
之前,用于代替created
和beforeCreated
,由于setup
函数执行的时候项目还没有初始化,所以不能访问data
或methods
中的数据,也不能使用this
。
由于不能使用
this
,在使用很多变量上会和vue2
有一定区别
1
2
3
4
5
// $router
this.$router; // vue2
// vue3
import { useRoute, useRouter } from 'vue-router'
const $router = useRouter();
1
2
3
4
// 获取proxy, 和this类似作用
import { getCurrentInstance } 'vue';
let { proxy } = getCurrentInstance() as ComponentInternalInstance;
proxy.$router // 通过proxy获取$router
3、如果要在<script setup>
中使用生命周期钩子函数,调用onXXX
方法即可,例如mounted
方法就是onMounted
方法。
ref
属性
- 被用来给元素或者子组件注册引用信息
- 应用在
html
标签上获取的是真是DOM
元素,应用在组件标签上是组件实例对象- 使用方式,在标签中增加
ref="xxx"
,然后就可以通过this.$refs.xxx
来获取注意在
<script setup>
中,使用方式有所改变,因为不能使用this
指针
1
2
3
4
5
6
7
8
<ChildVue ref="childRef" />
<script setup lang='ts'>
const childRef = ref();
onMounted(() => {
console.log(childRef.value); // Proxy{...}
});
</script>碰到一个错误就是使用
refName.value.xxx='xx'
去做修改的时候报错:'set' on proxy: trap returned falsish for property 'direction',大概原因是修改了只读变量,如果要做修改需要将其变成可修改的变量。
1
2
let s = Object({}, steps.value);
steps.value = s; // 这样steps.value就可以修改了如果在父组件中需要调用子组件内的方法,需要在子组件中将方法公开
1
2
3
4
5
6
const foo = () => {
//...
};
defineExpose({
foo
});然后就可以在父组件中使用
相关文章:
vue3-script-setup
http://example.com/2023/01/13/front-end-technology/script-setup/