vue3.2中setup语法糖的详细使用说明

vue3.2中setup语法糖的详细使用说明

1.setup语法糖使用

在vue3.0中,setup函数中的变量必须return出来才能给template使用,3.2中使用setup语法糖无需return变量就可以在template中使用了
在这里插入图片描述

2.data中数据和method方法使用

在这里插入图片描述

3.组件引入

引入的组件可以直接使用,无需再通过components进行注册
在这里插入图片描述

4.父子组件传值props

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.子组件给父组件传值emit

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.provide 和 inject 祖孙传值

在这里插入图片描述
在这里插入图片描述

7.通过ref获取和defineExpose 暴露属性

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

8.computed计算属性的使用

<script setup>
import {
    
     reactive, computed } from "vue";
//数据
let personInfo = reactive({
    
    
  firstName: "上官",
  lastName: "婉儿",
});
// computed计算属性简写
personInfo.fullName = computed(() => {
    
    
  return personInfo.firstName + "-" + personInfo.lastName;
});
// computed计算属性完整写法
personInfo.fullName = computed({
    
    
  get() {
    
    
    return personInfo.firstName + "-" + personInfo.lastName;
  },
  set(val) {
    
    
    const arry = val.split("-");
    personInfo.firstName = arry[0];
    personInfo.lastName = arry[1];
  },
});
</script>

9.watch监听的使用

<script setup>
import {
    
     reactive, watch } from "vue";
let sum = ref(1);
let msg = ref("哈哈哈");
let personInfo = reactive({
    
    
  name: "张三",
  age: 18,
  job: {
    
    
    work:"IT"
  },
});

watch([sum, msg],
  (newVal, oldVal) => {
    
    
    console.log("监听sum和msg", newVal, oldVal);
  },
  {
    
     immediate: true }
);

watch(() => personInfo.job,
  (newVal, oldVal) => {
    
    
    console.log("personInfo数据变了", newVal, oldVal);
  },
  {
    
     deep: true } //深度监听
);
</script>

10.路由useRoute和useRouter的使用

<script setup>
  import {
    
     useRoute, useRouter } from 'vue-router'

  // 声明
  const route = useRoute()
  const router = useRouter()
    
  // 获取query数据
  console.log(route.query)
  // 获取params数据
  console.log(route.params)

  // 路由跳转
  router.push({
    
    
      path: `/home`
  })
</script>

11.store仓库的使用

<script setup>
  import {
    
     useStore } from 'vuex'
  import {
    
     user } from '../store/index'

  const store = useStore(user)
    
  // 获取Vuex的state
  console.log(store.state.name)
  // 获取Vuex的getters
  console.log(store.state.getName)
  
  // 提交mutations
  store.commit('updateName')
  
  // 分发actions的方法
  store.dispatch('updateName')
</script>

12.await的使用

setup 语法糖中可直接使用 await,不需要写 async , setup 会自动变成 async setup

<script setup>
  import {
    
     getInfo } from '@/api/user'
  const data = await getInfo()
  console.log(data)
</script>

猜你喜欢

转载自blog.csdn.net/weixin_45324044/article/details/126141373