当前位置:首页 > VUE

vue实现点赞案例

2026-02-23 20:22:29VUE

Vue 点赞功能实现

在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交互的实现

vue实现点赞案例

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)
  }
}

防抖处理防止重复点击

import { debounce } from 'lodash'

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

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

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

相关文章

vue实现多选题

vue实现多选题

Vue实现多选题的方法 使用Vue实现多选题功能,可以通过v-model绑定数组、动态渲染选项、以及处理选中状态来实现。以下是一个完整的实现示例: 基础实现代码 <template>…

vue实现文字

vue实现文字

Vue 中实现文字显示的方法 在 Vue 中实现文字显示可以通过多种方式,包括插值表达式、指令、组件等。以下是几种常见的实现方法: 插值表达式 使用双大括号 {{ }} 进行文本插值,这是 Vue…

vue实现全屏

vue实现全屏

Vue 实现全屏功能的方法 在 Vue 中实现全屏功能可以通过浏览器提供的 Fullscreen API 来实现。以下是几种常见的实现方式: 使用原生 Fullscreen API 通过调用 doc…

vue实现fullpage

vue实现fullpage

Vue 实现 FullPage 效果 在 Vue 中实现全屏滚动(FullPage)效果可以通过多种方式完成,以下是几种常见的方法: 使用现有库 vue-fullpage.js 安装 vue-ful…

vue底层实现

vue底层实现

Vue.js 的底层实现原理 Vue.js 是一个渐进式 JavaScript 框架,其核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是其关键实现细节: 响应式系统 Vue 2…

vue实现api

vue实现api

Vue 实现 API 调用 在 Vue 中调用 API 通常涉及使用 axios 或 fetch 发送 HTTP 请求,并结合 Vue 的响应式特性管理数据。以下是常见的实现方式: 安装 axios…