讲师中心 微信公众号

工具推荐

视频效率加速
updream

一键生成高质量推广成片

AniShort
AniShort

AI短剧协同制作平台

Laper
Laper

剧本策划到成片协作

剧云
剧云

中文短剧剧本制作平台

uni-app怎么实现视频点赞评论和转发

陌丽君_5382

陌丽君_5382

发布时间:2026-11-13 07:47:30

|

284人浏览过

|

来源于php中文网

原创

uni-app视频点赞需初始化isLiked/likeCount字段,用pendingIds防连点,状态存localStorage防刷新丢失,动画须onReady后创建并按“改状态→启动动画→发请求”顺序执行。

uni-app怎么实现视频点赞评论和转发

视频点赞、评论、转发不是三个独立功能,而是一套状态联动的交互闭环。直接在 onTap 里发请求 + 改 data,大概率出现图标不翻转、数字不同步、连点重复提交、下拉刷新后状态丢失等问题——根本原因在于 uni-app 的响应式机制和小程序生命周期约束。

uni-app 视频列表里点赞按钮点击无反应?检查 data 初始化是否包含完整字段

常见现象:点了爱心图标,isLiked 在 console 里确实变了,但图标没切换、数字没加减,甚至整个 v-for 列表重渲染导致滚动错位。

  • uni-app(基于 Vue 2)只对 data() 初始化时就声明的属性做响应式劫持;后端返回的视频数据若没带 isLiked 或 likeCount 字段,后续赋值不会触发更新
  • 错误写法:this.videoList[index] = {...video, isLiked: !video.isLiked} —— 替换整个对象会切断响应式引用
  • 正确做法:初始化时确保每条视频都有默认值,例如 { id: '1001', title: 'xxx', isLiked: false, likeCount: 0 }
  • 更新时用直接赋值:this.videoList[index].isLiked = !this.videoList[index].isLiked,或兜底用 this.$set(this.videoList[index], 'isLiked', newValue)

怎么防止用户手滑连点导致点赞状态错乱?用 pendingIds 做请求节流

没有防抖时,快速双击会触发两次 onTap,本地状态翻转两次,但服务端可能只处理最后一次,最终 UI 和接口状态不一致。

uni-app
uni-app

uni-app 是基于 Vue 的跨端开发框架,适合开发 H5、App、小程序、鸿蒙和多端业务应用。

下载
  • 在 data 中声明 pendingIds: [],记录正在请求的视频 ID
  • 点击时先判断:if (this.pendingIds.includes(video.id)) return
  • 发起请求前:this.pendingIds.push(video.id)
  • 请求完成后(无论 success/fail):const idx = this.pendingIds.indexOf(video.id); if (idx > -1) this.pendingIds.splice(idx, 1)
  • 服务端返回新 likeCount 后再更新本地,别依赖 ++,避免并发计数偏差

评论和转发按钮点击后如何保持状态跨页面/下拉刷新不丢失?必须持久化本地状态

uni-app 页面卸载(如从详情页返回列表页)或 onPullDownRefresh 重拉数据时,data 会被清空或覆盖,之前点过的赞、发过的评论、转过的链接就“消失”了。

  • 点赞状态优先存 uni.setStorageSync('liked_videos', ['1001', '1005']),渲染前用 liked_videos.includes(video.id) 判断图标样式
  • 转发状态建议用 uni.setStorageSync('shared_videos', { '1001': { platform: 'wechat', timestamp: 1730287680 }),支持多平台区分
  • 评论内容本身不能只存在内存里;用户输入后应立即存入 uni.setStorageSync('draft_comments', { '1001': '刚看到这个...' }),避免切后台丢失
  • onPullDownRefresh 时,先缓存当前已操作 ID 集合:const localLiked = this.videoList.filter(v => v.isLiked).map(v => v.id),请求成功后再合并进新数据

为什么小红书式点赞动画一卡一卡?动画容器和创建时机必须严格匹配

CSS 动画在 iOS 微信小程序中对 transform + opacity 同时动画支持不稳定;用 uni.createAnimation 是更稳妥的选择,但容易因 DOM 未就绪或复用错位导致动画不触发。

  • 动画容器必须是 <view></view>,不能是 <image></image> 或 <text></text>
  • 每个视频项需独立的 animationData 字段,如 aniData[index],避免多个动画互相覆盖
  • 动画实例必须在 DOM 渲染完成之后创建:推荐在 onReady 钩子中懒创建,或首次点击时判断 !this.animation 再初始化
  • 动画结束后要手动重置:setTimeout(() => this.aniData[index] = {}, 400),否则下次点击无法再次触发
  • 数字增长动画不能靠 CSS 过渡,必须用 requestAnimationFrame 控制逐帧变化;封装成工具函数传入起始值、目标值、持续时间即可

最易被忽略的一点:所有操作必须严格遵循「先改本地状态 → 再触发动画 → 最后发网络请求」顺序。把请求放在最前面,一旦延迟或失败,UI 就会滞后甚至卡死。这不是性能问题,而是状态流设计的硬性约束。

热门AI工具

更多
Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2983

2023.08.11

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

6543

2023.10.09

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

7390

2024.03.19

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

7278

2024.03.22

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

1043

2024.05.22

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2335

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

3822

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1276

2023.10.13

Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

0

2026.11.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app从入门到实战教程
uni-app从入门到实战教程

共0课时 | 0人学习

Uniapp从零开始实现新闻资讯应用
Uniapp从零开始实现新闻资讯应用

共67课时 | 12.7万人学习

uni-app电商项目实战
uni-app电商项目实战

共71课时 | 15.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn