vue3中使用return语句返回this.$emit(),在同一行不执行,换行后才执行,好奇怪!

今天练习TodoList任务列表案例,该案例效果如图所示:
在这里插入图片描述
此案例除了根组件App.vue,还有TodoList、TodoInput、TodoButton三个子组件。
在这里插入图片描述
因为有视频讲解,在制作TodoList、TodoInput时很顺利,只是在完成TodoButton这个组件时出了点问题。
在点击”全部“、”已完成“、”未完成“三个按钮时,预期的效果不出现,被点击的按钮颜色不变化,没反应。
下面是TodoButton.vue组件的完整代码。

<template>
    <div class="mt-3 btn-container">
        <div class="btn-group" role="group" aria-label="Basic example">
            <button type="button" class="btn" :class="active === 0 ? 'btn-danger' : 'btn-secondary'"
                @click="onBtnClick(0)">全部</button>
            <button type="button" class="btn" :class="active === 1 ? 'btn-danger' : 'btn-secondary'"
                @click="onBtnClick(1)">已完成</button>
            <button type="button" class="btn" :class="active === 2 ? 'btn-danger' : 'btn-secondary'"
                @click="onBtnClick(2)">未完成</button>
        </div>
    </div>
</template>
<script>
export default {
    name: 'TodoButton',
    emits: ['update:active'],
    props: {
        active: {
            type: Number,
            required: true,
            default: 0,
        },
    },
//return 和后面的语句this.$emit('update:active', index)在同一行的话,不执行

    methods: {
        onBtnClick(index) {
            if (index === this.active) return this.$emit('update:active',index)
        },
    },
}
</script>
<style scoped >
.btn-container {
    width: 400px;
    text-align: center;
}
</style>


经过一番排错,发现问题出在methods部分。

     methods: {
        onBtnClick(index) {
            if (index === this.active) return this.$emit('update:active',index)
        },
    },

上面的代码如果从return的后面换行,改成下面的格式,程序就可以正常的执行。

    methods: {
        onBtnClick(index) {
            if (index === this.active) return
            this.$emit('update:active',index)
        },
    },

我试了好几次,都是如此。
真是奇怪!我去翻了return语句的语法格式,发现return和后面的返回值可以是不换行的。
在这里插入图片描述
为什么到了 this.$emit(‘update:active’,index)这里就必须从return后换行才可以呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值