• vue3中使用setup语法糖使用


    目录

    变量声明

    父传子

    子传父 

    变量声明

    变量声明定义的时候,不需要返回可以直接使用即可

    没有使用setup语法糖时写法

    1. <script>
    2. import {useStore} from 'vuex'
    3. export default {
    4. setup() {
    5. const store=useStore()
    6. const plus=()=>{
    7. store.commit('plus')
    8. }
    9. return {plus}
    10. },
    11. }
    12. </script>

    使用setup语法糖写法

    1. <script setup>
    2. import { reactive, ref, toRefs } from "vue";
    3. let num = ref(100);
    4. const plus = ()=>{
    5. num.value++;
    6. }
    7. let {name,age} = toRefs(reactive({
    8. name:"张三",
    9. age:20,
    10. }));
    11. </script>

    toRefs解析reactive数据,可以通过解构赋值进行数据获取

    在setup中使用toRefs来解析对象,在非setup中使用...toRefs()方法来解析,这也是一个区别

    setup语法糖组件只需要导入,不需要注册组件

    1. <template>
    2. <div>
    3. {{name}}--{{age}}
    4. <el-button @click="plus">Plus</el-button>
    5. <son/>
    6. </div>
    7. </template>
    8. <script setup>
    9. import { reactive, ref, toRefs } from "vue";
    10. import son from "../components/Son.vue"
    11. let num = ref(100);
    12. const plus = ()=>{
    13. num.value++;
    14. }
    15. let {name,age} = toRefs(reactive({
    16. name:"张三",
    17. age:20,
    18. }));
    19. </script>

    在非setup语法糖中我们需要使用components来注册子组件

    setup语法糖中父子组件通信也发生了变化,使用defineProps和defineEmits来进行父子组件通信

    父传子

    父组件

    1. <template>
    2. <div>
    3. {{name}}--{{age}}
    4. <Son :num="age" :name='name' />
    5. </div>
    6. </template>
    7. <script setup>
    8. import { reactive, ref, toRefs } from "vue";
    9. import Son from "./Son.vue"
    10. let {name,age} = toRefs(reactive({
    11. name:"张三",
    12. age:20,
    13. }));
    14. </script>

    子组件

    1. <template>
    2. <div>
    3. <h3>Son子组件--{{num}}--{{name}}</h3>
    4. </div>
    5. </template>
    6. <script setup>
    7. import { ref,defineEmits } from "vue"
    8. defineProps({
    9. num:{
    10. type:Number,
    11. },
    12. name:{
    13. type:String,
    14. }
    15. })
    16. </script>

    子传父

    父组件

    1. <template>
    2. <div>
    3. <Son @plus="plus"/>
    4. </div>
    5. </template>
    6. <script setup>
    7. import { reactive, ref, toRefs } from "vue";
    8. import Son from "./Son.vue"
    9. let num = ref(100);
    10. const plus = ()=>{
    11. num.value++;
    12. }
    13. </script>

    子组件

    1. <template>
    2. <div>
    3. <button @click="add">点我</button>
    4. </div>
    5. </template>
    6. <script setup>
    7. import { ref,defineEmits } from "vue"
    8. const num=ref(1)
    9. const emits = defineEmits(['num'])//定义号要子传父
    10. const add=()=>{
    11. emits('plus',num.value)
    12. }
    13. </script>

  • 相关阅读:
    【MySql】2- 基础篇(下)
    [前端]前端项目,重启项目端口号改变的问题
    Photoshop(CC2020)未完
    一口气搞懂分库分表 12 种分片算法,大厂都在用
    springBoot--web--静态资源规则
    中伟视界:《安徽省非煤矿山风险防控建设》政策文件要求及项目实施情况详解
    HummerRisk V0.5.1 发布:新增对象存储、优化K8s 资源态势和资源拓扑等
    【C++】C/C++内存管理
    本周技术概要20231016-20231022与生活点滴
    pgsql按varchar字段排序
  • 原文地址:https://blog.csdn.net/qq_60976312/article/details/128121860