当前位置: 首页 > article >正文

前端删除评论操作(局部更新数组)

​评论的删除是局部删除,把所点击的评论id号传递给后端,通知后端在数据库中删除数据,并且返回数据,但是在前端并不直接接收返回的数据,而是触发回调事件,在前端上进行删除评论,首先通过pId观察他是否为以及评论,如果为一级评论,也是就是他的pid为0,就直接通过foreach函数返回新的数组,如果pid号不等于0,就是二级评论,这个时候要通过find函数找到父评论,再通过foreach函数返回新数组

1.在VideoCommentItem组件中,对于要置顶的评论发布”topCommentCallback“事件

// 删除评论
const delComment = () => {proxy.Confirm({message: `确定要删除评论吗?`,okfun: async () => {let result = await proxy.Request({url:proxy.Api.userDelComment,params: {commentId: props.data.commentId,},});if (!result) {return;}mitter.emit("delCommentCallback",{pCommentId:props.data.pCommentId,commentId:props.data.commentId,});},});
};

在VideoComment组件中,不能简单的重新加载数据,

因为评论有很多二级评论,重新加载数据会造成卡顿等显现,所以先判断是否为以及评论,是的话,对以及评论直接加载,不是的话,由返回的pCommentId找到父评论,循环父评论的孩子评论,得到新的数组,即通过本地精准更新避免全量加载

onMounted(()=>{// 删除mitter.on("delCommentCallback",({pCommentId,commentId})=>{//  pCommentId: 父评论ID(0表示顶级评论)commentId: 要删除的评论IDif(pCommentId==0){// 如果是一级评论,没有父评论,即父评论ID为0dataSource.value.list=dataSource.value.list.filter(item=>{return item.commentId!=commentId})dataSource.value.totalCount--}else{// 找到父评论const pComment=dataSource.value.list.find(item=>{return item.commentId==pCommentId})pComment.children=pComment.children.filter(item=>{return item.commentId!=commentId})}})})
onUnmounted(()=>{mitter.off("delCommentCallback")
})

**tips:**为什么像置顶之类的就是后端做排序,删除之类的排序就在前端做
流程图
在这里插入图片描述

置顶操作:必须由后端排序

1.业务特性要求

  • 全局排序规则:置顶是一个 需要持久化存储的排序操作,所有用户看到的置顶评论顺序必须一致。

  • 动态权重计算:置顶可能涉及复杂规则(如置顶时间、权重值、管理员权限等),需后端统一计算。

  1. 技术必要性
  • 前端本地排序 → 其他用户看不到变化 ❌
  • 后端存储排序 → 所有客户端同步 ✅

删除操作:优先前端处理
1.业务特性要求

  • 即时反馈需求:用户期望删除后内容 立即消失,网络延迟会导致体验卡顿。
  • 局部数据变更:删除操作仅影响单条数据,无需重新计算整个列表顺序。
  1. 技术优势
    假设列表有 1000 条评论(含嵌套)
    前端删除 → 操作时间复杂度 O(n) ✅
    后端重载 → 网络传输 + 解析 + 渲染全量数据 ❌

相关文章:

前端删除评论操作(局部更新数组)

​评论的删除是局部删除,把所点击的评论id号传递给后端,通知后端在数据库中删除数据,并且返回数据,但是在前端并不直接接收返回的数据,而是触发回调事件,在前端上进行删除评论,首先通过pId观察他…...

数学复习笔记 28

前言 刷数学题非常爽啊。让我感觉自己能考一百四,一百五这种错觉。我和一个朋友说,我肯定能考一百四以上,他说他觉得我最多考一百二,笑死,我是这么菜的么。下面是线代第六章的例题的一些理解。我现在觉得考研数学不需…...

Delphi 实现远程连接 Access 数据库的指南

方法一:通过局域网共享 Access 文件(简单但有限) 步骤 1:共享 Access 数据库 将 .mdb 或 .accdb 文件放在局域网内某台电脑的共享文件夹中。 右键文件夹 → 属性 → 共享 → 启用共享并设置权限(需允许网络用户读写&a…...

在线OJ项目测试

一.项目简介 1.1项目背景 历史起源:最早的OJ系统(如UVa、POJ)是为国际大学生程序设计竞赛(ICPC)等赛事开发的,用于自动评判参赛者的代码正确性和效率。 需求场景:竞赛需要公平、高效的评分系统…...

C++ --- vector

C --- vector的使用 前言1、构造函数1.1默认构造1.2n个val值构造1.3迭代器区间构造1.4拷贝构造1.4初始化列表构造 2、遍历方式2.1[ ] 下标2.2迭代器2.3范围for 3、常用方法或重载(1)增push_back()insert()assign() (2)删erase()c…...

【python基础知识】变量名和方法名的单下划线(_)和双下划线(__)总结

文章目录 1. 单下划线前缀(_variable 或 _method())2. 双下划线前缀(__variable 或 __method())3. 前后双下划线(__variable__ 或 __method__)4. 单下划线(_)单独使用总结 在 Python…...

FART 脱壳某大厂 App + CodeItem 修复 dex + 反编译还原源码

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ FART 脱壳 fartthread 方法在 app 启动的时候(ActivityThread)开启 fart 线程,休眠 60 秒,等待 app 启动完成后…...

✅ 常用 Java HTTP 客户端汇总及使用示例

在 Java 开发中,HTTP 客户端是与服务端交互的关键组件。随着技术发展,出现了多种 HTTP 客户端库,本文汇总了常用的 Java HTTP 客户端,介绍其特点、适用场景,并附上简单使用示例,方便开发者快速选择和上手。…...

快速用 uv 模拟发布一个 Python 依赖包到 TestPyPI 上,以及常用命令

目录 1. uv 介绍2. uv 安装(Windows版)3. 快速模拟一个要发布到TestPyPI上的依赖包,scoful-test-lib3.1 初始化 uv init3.2 进入scoful-test-lib3.3 修改pyproject.toml3.4 使用命令 uv sync3.5. 使用命令 uv lock3.6 使用命令 uv build3.7 获…...

Keil调试模式下,排查程序崩溃简述

在Keil调试模式下,若程序崩溃,可以通过以下步骤来定位崩溃的位置: 一、查看调用栈(Call Stack) 打开调用栈窗口: 在Keil的调试模式下,点击菜单栏的“View” -> “Call Stack Window”&…...

Python读取PDF:文本、图片与文档属性

在日常的数据采集、文档归档与信息挖掘过程中,PDF格式因其版式固定、内容稳定而被广泛使用。Python 开发者若希望实现 PDF 内容的自动化提取,选择一个易用且功能完善的库至关重要。本文将介绍如何用Python实现 PDF文本读取、图片提取 以及 文档属性读取 …...

基于SpringBoot+Vue2的租房售房二手房小程序

角色: 管理员、房东、租客/买家 技术: springbootvue2mysqlmybatispagehelper 核心功能: 租房售房小程序是一个专注于房屋租赁和销售的综合性平台,基于SpringBootVue2MySQLMyBatisPageHelper技术栈开发,为用户提供…...

数学:学好数学需要对数系进行系统的对比和分析

数系范围:自然数通常是从 0 或 1 开始,用于计数的数,然后整数包括正负和零,有理数是分数,实数包括无理数,复数引入虚数单位。 运算性质:比如是否满足加法、乘法的封闭性,是否有逆元,是否有序,完备性等。 结构对比:比如代数结构,比如自然数是半群,整数是环,有理…...

基于本地LLM与MCP架构构建AI智能体全指南

一、AI智能体开发的新范式 随着人工智能技术的快速演进,AI智能体(AI Agents)正成为连接技术创新与实际应用的核心载体。从智能家居的温控系统到复杂的金融风控决策,AI智能体通过感知环境并执行目标导向的行为,正在重塑…...

AT2659_GNSS低噪声放大器芯片

AT2659 射频放大器在SiGe工艺平台上实现23dB增益与0.71dB噪声系数的优异组合,专为BDS/GPS/GLONASS/GALILEO多模导航系统优化设计。其宽电压适应能力(1.4-3.6V)与低至4.4mA的功耗特性,配合1.5mm1mm0.55mm的6脚DFN封装(R…...

跨平台游戏引擎 Axmol-2.6.1 发布

Axmol 2.6.1 版本是一个以错误修复和功能改进为主的次要LTS长期支持版本 🙏感谢所有贡献者及财务赞助者:scorewarrior、peterkharitonov、duong、thienphuoc、bingsoo、asnagni、paulocoutinhox、DelinWorks 错误修复 修复Android armv7架构崩溃问题&…...

MADlib —— 基于 SQL 的数据挖掘解决方案(4)—— 数据类型之矩阵

目录 一、矩阵定义 二、MADlib 中的矩阵表示 1. 稠密 2. 稀疏 三、MADlib 中的矩阵运算函数 1. 矩阵操作函数分类 (1)表示函数 (2)计算函数 (3)提取函数 (4)归约函数&…...

ServBay 1.13.0 更新,新增第三方反向代理/内网穿透

ServBay 作为一款简化本地开发环境搭建与管理的强大工具,致力于打造一个开箱即用、稳定可靠的本地开发平台,让用户专注于代码编写,提升开发效率。 ServBay 1.13.0 正式发布!本次更新聚焦于提升本地开发项目的外部可访问性、增强国…...

C#对象扩展方法:提升对象操作的灵活性与效率

C#对象扩展方法:提升对象操作的灵活性与效率 在C#编程中,我们经常需要对对象进行各种操作,如获取对象属性信息、转换对象格式、复制对象等。通过扩展方法,我们可以为现有类型添加新的功能,而无需修改原始类型的代码。…...

Python爬虫爬取天猫商品数据,详细教程【Python经典实战项目】

Python爬取天猫商品数据详细教程 一、前期准备 1. 环境配置 Python环境:确保已安装Python 3.x版本,建议使用Anaconda或直接从Python官网下载安装。第三方库: requests:用于发送HTTP请求。BeautifulSoup:用于解析HTM…...

Oracle 的 SEC_CASE_SENSITIVE_LOGON 参数

Oracle 的SEC_CASE_SENSITIVE_LOGON 参数 关键版本信息 SEC_CASE_SENSITIVE_LOGON 参数在以下版本中被弃用: Oracle 12c Release 1 (12.1): 该参数首次被标记为"过时"(obsolete)但依然保持功能有效 Oracle 18c/19c 及更高版本: …...

Docker构建自定义的镜像

构建自定义的 Docker 镜像是 Docker 使用中的核心操作之一。通过自定义镜像,你可以将应用程序及其依赖环境打包成一个可移植的容器化镜像。以下是详细的步骤和注意事项: 1. 准备工作 在构建自定义镜像之前,你需要准备以下内容: D…...

【SSM】SpringMVC学习笔记8:拦截器

这篇学习笔记是Spring系列笔记的第8篇,该笔记是笔者在学习黑马程序员SSM框架教程课程期间的笔记,供自己和他人参考。 Spring学习笔记目录 笔记1:【SSM】Spring基础: IoC配置学习笔记-CSDN博客 对应黑马课程P1~P20的内容。 笔记2…...

井川里予瓜pdf完整版

井川里予瓜pdf完整版 下载链接: 链接:https://pan.quark.cn/s/c75455d6be60 在网红文化盛行的当下,井川里予无疑是一位备受瞩目的人物。这位2001年出生于广东湛江的姑娘,凭借独特风格在网络世界掀起波澜,其发展轨迹…...

UI自动化常见的一些问题解决方式

1、遇到元素无法定位的情况 解决方法:(1)手写css 先找到父级的唯一元素 (2)手写xpath、 (3)js在浏览器控制台去定位 控制台定位样例:(1)…...

基于 Zynq 平台的 EtherCAT 主站的软硬件协同设计

摘要: 针对工业自动化对控制能力和强实时性的需求,提出了一种基于 FPGA 的改进型 EtherCAT 硬件主站方案 。 该方案利用 Zynq-7000 平台,在 PL 端实现 FPGA 协议栈,以保证核心功能的高效执 行 。 基于 AXI4 总线设计…...

聊一聊 .NET在Linux下的IO多路复用select和epoll

一:背景 1. 讲故事 在windows平台上,相信很多人都知道.NET异步机制是借助了Windows自带的 IO完成端口 实现的异步交互,那在 Linux 下.NET 又是怎么玩的呢?主要还是传统的 select,poll,epoll 的IO多路复用…...

从零开始的嵌入式学习day33

网络编程及相关概念 UDP网络通信程序 UDP网络通信操作 一、网络编程及相关概念 1. 网络编程概念: 指通过计算机网络实现程序间通信的技术,涉及协议、套接字、数据传输等核心概念。常见的应用场景包括客户端-服务器模型、分布式系统、实时通信等。…...

ArcGIS Pro 3.4 二次开发 - 宗地

环境:ArcGIS Pro SDK 3.4 + .NET 8 文章目录 宗地1 宗地1.1 向地图添加宗地图层1.2 获取活动记录1.3 设置活动记录1.4 创建新记录1.5 将标准线要素复制到宗地类型1.6 将宗地线复制到宗地类型1.7 将要素分配给活动记录1.8 创建宗地种子1.9 构建地块1.10 重复地块1.11 设置地块为…...

前端面试准备-7

1.定义class的实现 //定义class class Person{//公有属性nameage 18//构造函数constructor(name){//构造函数内部的this实例化对象this.name name//动态添加属性(不推荐)this.food [🐂,🐎,🐏]}//公有方法sayHi(){c…...