当前位置:首页 > VUE

vue实现点赞案例

2026-02-23 20:22:29VUE

Vue 点赞功能实现

在Vue中实现点赞功能可以通过数据绑定和事件处理来完成。以下是几种常见的实现方式:

基础实现

<template>
  <button @click="toggleLike">
    {{ isLiked ? '取消点赞' : '点赞' }} ({{ likeCount }})
  </button>
</template>

<script>
export default {
  data() {
    return {
      isLiked: false,
      likeCount: 0
    }
  },
  methods: {
    toggleLike() {
      this.isLiked = !this.isLiked
      this.likeCount += this.isLiked ? 1 : -1
    }
  }
}
</script>

带动画效果的实现

<template>
  <button @click="toggleLike" class="like-btn">
    <transition name="bounce">
      <span v-if="isLiked" key="liked">❤️</span>
      <span v-else key="unliked">♡</span>
    </transition>
    {{ likeCount }}
  </button>
</template>

<style>
.bounce-enter-active {
  animation: bounce-in 0.5s;
}
@keyframes bounce-in {
  0% { transform: scale(1); }
  50% { transform: scale(1.5); }
  100% { transform: scale(1); }
}
</style>

与后端API交互的实现

methods: {
  async toggleLike() {
    try {
      const response = await axios.post('/api/like', {
        postId: this.postId,
        action: this.isLiked ? 'unlike' : 'like'
      })
      this.isLiked = !this.isLiked
      this.likeCount = response.data.likeCount
    } catch (error) {
      console.error('点赞操作失败', error)
    }
  }
}

使用Vuex管理点赞状态

// store.js
state: {
  likedPosts: []
},
mutations: {
  TOGGLE_LIKE(state, postId) {
    const index = state.likedPosts.indexOf(postId)
    if (index === -1) {
      state.likedPosts.push(postId)
    } else {
      state.likedPosts.splice(index, 1)
    }
  }
}

// 组件中
computed: {
  isLiked() {
    return this.$store.state.likedPosts.includes(this.postId)
  }
},
methods: {
  toggleLike() {
    this.$store.commit('TOGGLE_LIKE', this.postId)
  }
}

防抖处理防止重复点击

vue实现点赞案例

import { debounce } from 'lodash'

methods: {
  toggleLike: debounce(function() {
    // 点赞逻辑
  }, 500)
}

这些实现方式可以根据具体需求进行组合和调整,满足不同场景下的点赞功能需求。

标签: 案例vue
分享给朋友:

相关文章

vue实现签名

vue实现签名

实现Vue签名功能的步骤 安装签名库 使用vue-signature库可以快速实现签名功能。通过npm或yarn安装: npm install vue-signature --save # 或 ya…

vue权限实现

vue权限实现

Vue 权限实现方案 基于路由的权限控制 通过路由守卫实现权限验证,在路由配置中添加meta字段标记权限要求。在router.beforeEach中检查用户权限与路由要求的匹配情况。 // rout…

vue实现setinterval

vue实现setinterval

在 Vue 中使用 setInterval Vue 中可以通过生命周期钩子和方法结合 setInterval 实现定时任务。以下是一个完整的实现示例: <template> <…

vue 菜单实现

vue 菜单实现

Vue 菜单实现方法 在Vue中实现菜单功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-for动态生成菜单 通过数据驱动的方式动态渲染菜单项,适合菜单内容可能变化的场景: <t…

vue怎么实现直播

vue怎么实现直播

Vue实现直播的方法 使用Vue实现直播功能通常需要结合第三方直播服务或WebRTC技术。以下是几种常见的实现方式: 使用第三方直播服务 集成如腾讯云、阿里云或七牛云等提供的直播SDK,通过他们的A…

vue实现tab功能

vue实现tab功能

Vue 实现 Tab 功能的方法 使用动态组件和 v-if 指令 通过 v-if 或 v-show 控制不同 Tab 内容的显示与隐藏。这种方法适合简单的 Tab 切换需求。 <templat…