首页 > 其他分享 >收藏文章组件

收藏文章组件

时间:2022-10-16 15:33:58浏览次数:49  
标签:value 收藏 articleId isLoading 文章 组件 true

 

 组件 :collectArticle

<template>
  <div class="collect-container">
    <van-loading v-if="isLoading" type="spinner" color="#1989fa"></van-loading>
    <van-icon
      v-else
      :color="value ? '#ff0000' : '#777'"
      :name="value ? 'star' : 'star-o'"
      @click="clickHandler"
    />
  </div>
</template>

<script>
import { delCollectArticleApi, addCollectArticleApi } from "@/api/Article";
export default {
  name: "collectArticle",
  data() {
    return {
      isLoading: false,
    };
  },
  props: {
    // 是否收藏
    value: {
      type: Boolean,
      required: true,
    },
    // 文章的 id
    articleId: {
      type: [String, Number],
      required: true,
    },
  },
  methods: {
    async clickHandler() {
      // 判断是否登录了,未登录不允许点击
      if (!this.$store.state.user) return this.$toast.fail("登录后才可以操作");
      // 节流阀 => 开始转圈圈
      this.isLoading = true;
      try {
        if (this.value) {
          // 去过已经收藏就取消
          await delCollectArticleApi(this.articleId);
        } else {
          // 如果未收藏就收藏
          await addCollectArticleApi({
            target: this.articleId,
          });
        }
        // 更新视图(按钮的状态)
        // this.value = !this.value;
        // vue 是单向数据流传递
        this.$emit("input", !this.value);
      } catch (error) {
        console.log({ error });
        this.$toast.fail("操作失败");
      }
      this.isLoading = false;
    },
  },
};
</script>

<style>
</style>

父组件传值 :

 <!-- 收藏文章组件 -->
          <collectArticle
            :article-id="articleInfo.art_id"
            :value="articleInfo.is_collected"
            @input="articleInfo.is_collected = $event"
          ></collectArticle>

写成语法糖 v-model

 <collectArticle
            :article-id="articleInfo.art_id"
            v-model="articleInfo.is_collected"
          ></collectArticle>

标签:value,收藏,articleId,isLoading,文章,组件,true
From: https://www.cnblogs.com/zhulongxu/p/16796270.html

相关文章

  • v-model 语法糖-在父子组件传值 的简写形式
    props的变量名字必须是 value,this.$emit('input',数据值)的自定义事件必须是input;v-model 是vue中进行数据双向绑定的指令,在内部实际上是通过语法糖来完成数据......
  • 关于自定义事件父子组件传值问题 $event
    1.$event是vue提供的特殊变量,用来表示原生的事件参数对象event1.1在原生事件中,$event是事件对象可以点出来属性 2.在原生事件中,$event是事件对象,在自定义事件中,$ev......
  • 一篇文章带你掌握主流办公框架——SpringBoot
    一篇文章带你掌握主流办公框架——SpringBoot在之前的文章中我们已经学习了SSM的全部内容以及相关整合SSM是Spring的产品,主要用来简化开发,但我们现在所介绍的这款框架—......
  • 序列化组件
    序列化组件的三大功能序列化,序列化器会把模型对象转换成字典,经过response以后变成json字符串反序列化,把客户端发送过来的数据,经过request以后变成字典,序列化器......
  • 02应用和组件
    1<!doctypehtml>2<htmllang="en">3<head>4<metacharset="UTF-8">5<metaname="viewport"6content="width=device-width,user-sca......
  • Ubuntu自定义快捷方式及收藏
    有时候在Ubuntu上直接下载应用压缩包,解压后运行,会出现不能收藏的情况,另外也可能想要一个类似Windows上快捷方式的形式打开应用。基本步骤新建一个appName.desktop文......
  • 兄弟组件传值
    https://www.bilibili.com/video/BV1Hu411r7dt/?spm_id_from=333.337.search-card.all.click&vd_source=d87a0cdb006a04b60ce265a9ce85d6afeventBus可以在全局定义......
  • 媒介星软文推广平台是坑吗?【曝光文章并非营销】
    小编我其实是搞技术的,平常研究一些AUTOJS或者易语言 js后端技术的人怎么会发软文之类的文章呢,其实是事出有因,因为呀这个行业做营销不人道了,在百家号,腾讯新闻账号注册了......
  • restframework分页组件的应用
    restframework中提供了优秀的分页组件在settings.py中,填写关于restframework的配置REST_FRAMEWORK={"UNAUTHENTICATED_USER":None,"PAGE_SIZE":4}1.Pag......
  • Jmeter扩展组件:图形监视器-PerfMon (Servers Performance Monitoring)
    1、是什么用于监听服务器CPU、IO、网络等各项指标的组件2、如何实现Jmeter​本身不具备该功能,需要下载第三方实现在服务器端安装监听程序,在测试机端安装接收程序监听程序:Ser......