子组件中this.$emit("input", false)的解释

子组件中this.$emit(“input”, false)的解释(个人见解)

1.先看官方文档
在这里插入图片描述
在父组件中有如下的定义

 <new-album v-model="isNewAlbum"></new-album>

等同于下面的写法

 <new-album v-bind:value="isNewAlbum" v-on:input="isNewAlbum=$event"></new-album>

在子组件中用下列写法接收

props: {
   value: {
     type: Boolean
   }
 },
 data() {
   return {
     show: this.value,
   };
 },
 ...
 watch: {
   value(val) {
     this.show = val;
   },
   show(val) {
     if (!val) {
       this.$emit("input", false);
     }
   }
 },

input事件将false传递给父组件中用v-model绑定的isNewAlbum,即执行isNewAlbum=false

怎么解决这段报错Invalid prop: type check failed for prop "isLikinged". Expected Boolean, got Number with value -1. found in ---> <LikingCom> at src/components/likingCom.vue <ArticleIndex> at src/views/article/articleView.vue <App> at src/App.vue在<template> <div> <van-button class="starbtn" :icon="isLikinged ? 'good-job' : 'good-job-o'" type="primary" @click="LikingFn" :loading="likingLoading" /> <!-- <van-icon color="#777" name="good-job-o" /> --> </div> </template> <script> import { likingGoApi, likingOutApi } from "@/api/article"; export default { model: { prop: "isLikinged", event: "isLikingFn", //组件触发的事件 }, props: { isLikinged: Boolean, artId: [Number, String], //作者id }, data() { return { likingLoading: false, //收藏按钮的loading }; }, methods: { async LikingFn() { // 收藏/取消收藏文章的点击方法 try { this.likingLoading = true; if (this.isLikinged) { // 为true的时候取关 await likingOutApi(this.artId); this.$toast.success("点赞成功"); } else { // 走关注接口 await likingGoApi(this.artId); this.$toast.success("取消点赞"); } this.likingLoading = false; // 关注或未关注,都要修改按钮的视图状态 // props单向数据流,不能在组件修改,向父 // this.$emit("isFollowedFn"); //this.$emit触发input自定义事件 // this.$emit("input", !this.value); this.$emit("isLikingFn", !this.isLikinged); } catch (error) { console.log(error); } }, }, }; </script> <style scoped lang="less"> /deep/.starbtn { background: #fff; border: 0px; color: #3a3a3a; .van-icon-star-o { color: #3a3a3a; } .van-icon-star { color: #ff9912; } } </style>代码里
05-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值