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

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

1.setup语法糖使用

在vue3.0中,setup函数中的变量必须return出来才能给template使用,3.2中使用setup语法糖无需return变量就可以在template中使用了
vue3.2中setup语法糖的详细使用说明_第1张图片

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

vue3.2中setup语法糖的详细使用说明_第2张图片

3.组件引入

引入的组件可以直接使用,无需再通过components进行注册
vue3.2中setup语法糖的详细使用说明_第3张图片

4.父子组件传值props

vue3.2中setup语法糖的详细使用说明_第4张图片
vue3.2中setup语法糖的详细使用说明_第5张图片
vue3.2中setup语法糖的详细使用说明_第6张图片

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

vue3.2中setup语法糖的详细使用说明_第7张图片
vue3.2中setup语法糖的详细使用说明_第8张图片
vue3.2中setup语法糖的详细使用说明_第9张图片

6.provide 和 inject 祖孙传值

vue3.2中setup语法糖的详细使用说明_第10张图片
vue3.2中setup语法糖的详细使用说明_第11张图片

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

vue3.2中setup语法糖的详细使用说明_第12张图片

vue3.2中setup语法糖的详细使用说明_第13张图片
vue3.2中setup语法糖的详细使用说明_第14张图片

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>

你可能感兴趣的:(vue3,vue.js)