当前位置:首页 > VUE

vue 实现批量关注

2026-01-15 02:33:32VUE

实现批量关注功能

在Vue中实现批量关注功能通常涉及前端界面交互、API调用和状态管理。以下是实现该功能的关键步骤:

界面设计与交互

创建多选框或选择列表供用户批量选择关注对象

<template>
  <div>
    <div v-for="item in items" :key="item.id">
      <input type="checkbox" v-model="selectedItems" :value="item.id">
      {{ item.name }}
    </div>
    <button @click="batchFollow">批量关注</button>
  </div>
</template>

数据绑定与状态管理

使用Vue的响应式数据来跟踪选中状态

vue 实现批量关注

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: '用户A' },
        { id: 2, name: '用户B' }
      ],
      selectedItems: []
    }
  },
  methods: {
    async batchFollow() {
      if(this.selectedItems.length === 0) return

      try {
        await this.$api.follow.batchFollow({
          targetIds: this.selectedItems
        })
        this.$message.success('关注成功')
        this.selectedItems = []
      } catch(error) {
        console.error(error)
      }
    }
  }
}
</script>

API请求处理

封装批量关注的API请求方法

// api/follow.js
import request from '@/utils/request'

export function batchFollow(data) {
  return request({
    url: '/follow/batch',
    method: 'post',
    data
  })
}

性能优化考虑

对于大量数据的情况,实现分页加载和虚拟滚动

vue 实现批量关注

<template>
  <div>
    <virtual-list :size="50" :remain="10">
      <div v-for="item in items" :key="item.id">
        <input type="checkbox" v-model="selectedItems" :value="item.id">
        {{ item.name }}
      </div>
    </virtual-list>
  </div>
</template>

错误处理与用户反馈

添加加载状态和错误提示

methods: {
  async batchFollow() {
    this.loading = true
    try {
      await this.$api.follow.batchFollow({
        targetIds: this.selectedItems
      })
      this.$message.success(`成功关注${this.selectedItems.length}个用户`)
    } catch {
      this.$message.error('关注失败,请重试')
    } finally {
      this.loading = false
    }
  }
}

后端接口建议

批量关注接口应支持幂等性设计,避免重复关注

// 后端接口示例
router.post('/follow/batch', async (ctx) => {
  const { targetIds } = ctx.request.body
  const userId = ctx.state.user.id

  await FollowModel.bulkCreate(
    targetIds.map(targetId => ({
      userId,
      targetId,
      createdAt: new Date()
    })), {
      ignoreDuplicates: true
    }
  )

  ctx.body = { success: true }
})

注意事项

批量操作需要考虑服务器压力,建议限制单次请求的最大数量

watch: {
  selectedItems(newVal) {
    if(newVal.length > 100) {
      this.$message.warning('单次最多选择100个用户')
      this.selectedItems = newVal.slice(0, 100)
    }
  }
}

标签: 批量vue
分享给朋友:

相关文章

vue实现增删改

vue实现增删改

Vue 实现增删改查功能 Vue.js 是一个流行的前端框架,用于构建用户界面。以下是使用 Vue.js 实现增删改查(CRUD)功能的方法。 数据初始化 在 Vue 实例的 data 中初始化一…

vue实现条件判断

vue实现条件判断

Vue 条件判断实现方法 Vue 提供了多种方式实现条件判断,可以根据不同场景选择合适的方式。 v-if / v-else-if / v-else 这是 Vue 中最常用的条件渲染指令,根据表达式的…

vue搜索过后实现分页

vue搜索过后实现分页

Vue 实现搜索后分页功能 数据绑定与搜索逻辑 在 Vue 组件中定义必要的数据属性: data() { return { searchQuery: '', currentPag…

vue实现查询替换

vue实现查询替换

Vue 实现查询替换功能 在 Vue 中实现查询替换功能,可以通过数据绑定和字符串操作方法结合实现。以下是具体实现方式: 基础实现 <template> <div>…

vue按钮实现截屏

vue按钮实现截屏

Vue 按钮实现截屏的方法 在 Vue 项目中实现截屏功能可以通过多种方式完成,以下是几种常见的方法: 使用 html2canvas 库 安装 html2canvas 库: npm ins…

vue实现全局遮罩层

vue实现全局遮罩层

实现全局遮罩层的方法 在Vue中实现全局遮罩层可以通过多种方式完成,以下是几种常见的实现方法: 使用Vue组件创建遮罩层 创建一个遮罩层组件,通过全局注册或动态挂载的方式实现全局调用。以下是一个简单…