Vue3 + Element-Plus 使用 Table 插槽时数据未及时更新

news2024/11/27 0:27:35

Vue3 + Element-Plus 使用 Table 插槽时数据未及时更新

  • 问题重现
  • 解决方法
  • 最终效果

问题重现


这里我已经通过二级分类 id 查询到一级分类和二级分类,但是使用插槽和 v-for 渲染出来还是之前的分类 id,但是一点击表格或者保存代码他又能正常刷新出来。

在这里插入图片描述

<template>
	<el-table :height="tableHeight" :data="tableList" border stripe>
		<el-table-column prop="goodsDesc" label="商品简介" align="center"></el-table-column>
		<el-table-column prop="categoryId" label="分类" align="center">
			<template #default="scope" style="display: flex;">
				<el-tag style="margin-left: 10px;" type="success" effect="dark" v-for="(item, index) in scope.row.categoryId" :key="index">{{ item }}</el-tag>
			</template>
	    </el-table-column>
	</el-table>
</template>


<script setup lang="ts">
import { onMounted, ref } from 'vue';
// 表格数据
const tableList = ref([]);
// 列表查询
const getList = async () => {
    let res = await getGoodsListApi(searchParm, "0");
    if (res && res.code == 200) {
        // 获取出图片和视频列表
        res.data.records.forEach((goods: any) => {
            // 分割 image 属性,得到图片和视频链接数组
            // 通过二级分类标签获取整个分类类别
            let res = getGoodsTypeBySonIdApi(goods.categoryId);
            res.then((value) => {
                goods.categoryId = value.data;
            });
            const imageArray = goods.image.split(',');

            // 判断每个链接的类型并添加对应的属性
            imageArray.forEach((url: String) => {
                if (url.endsWith('.png') || url.endsWith('.jpg') || url.endsWith('.jpeg')) {
                    // 图片链接
                    if (!goods.images) {
                        goods.images = [];
                    }
                    goods.images.push(url);
                } else if (url.endsWith('.mp4') || url.endsWith('.avi') || url.endsWith('.mov')) {
                    // 视频链接
                    if (!goods.videos) {
                        goods.videos = [];

                    }
                    goods.videos.push(url);
                }
            });

            // 删除原始的 image 属性
            delete goods.image;
        });
        tableList.value = res.data.records;
        searchParm.total = res.data.total;
    }
}
onMounted(() => {
    tableHeight.value = window.innerHeight - 200;
    getList();
})

处理后的数据示例

[
    {
        "goodsId": 3,
        "userId": 7,
        "orderId": null,
        "categoryId": [
            "数码",
            "电脑"
        ],
        "type": "0",
        "goodsName": null,
        "goodsDesc": "这是二条测试数据",
        "goodsOldPrice": 200,
        "goodsNewPrice": 100,
        "isNew": null,
        "tradingType": "邮寄",
        "findType": "QQ",
        "findValue": "13036497562",
        "wxNum": 0,
        "status": "1",
        "sellStatus": null,
        "createTime": "2024-04-14",
        "sellTime": null,
        "address": "北京市东城区东华门街道锡拉胡同北京利生体育商厦, 39.916405, 116.410243",
        "deleteStatus": "0",
        "userById": 0,
        "images": [],
        "videos": []
    },
    {
        "goodsId": 1,
        "userId": 7,
        "orderId": null,
        "categoryId": [
            "数码",
            "电脑"
        ],
        "type": "0",
        "goodsName": null,
        "goodsDesc": "这是一条测试数据",
        "goodsOldPrice": 200,
        "goodsNewPrice": 100,
        "isNew": null,
        "tradingType": "面交",
        "findType": "手机号",
        "findValue": "13036497562",
        "wxNum": 0,
        "status": "1",
        "sellStatus": null,
        "createTime": "2024-04-14",
        "sellTime": null,
        "address": "北京市东城区东华门街道锡拉胡同北京利生体育商厦, 39.916405, 116.410243",
        "deleteStatus": null,
        "userById": 0,
        "images": [],
        "videos": []
    }
]

解决方法


通过二级分类标签获取整个分类类别
不与
获取出图片和视频列表操作
同时进行

// 列表查询
const getList = async () => {
    let res = await getGoodsListApi(searchParm, "0");
    if (res && res.code == 200) {
        // 获取出图片和视频列表
        res.data.records.forEach((goods: any) => {
            // 分割 image 属性,得到图片和视频链接数组
            const imageArray = goods.image.split(',');

            // 判断每个链接的类型并添加对应的属性
            imageArray.forEach((url: String) => {
                if (url.endsWith('.png') || url.endsWith('.jpg') || url.endsWith('.jpeg')) {
                    // 图片链接
                    if (!goods.images) {
                        goods.images = [];
                    }
                    goods.images.push(url);
                } else if (url.endsWith('.mp4') || url.endsWith('.avi') || url.endsWith('.mov')) {
                    // 视频链接
                    if (!goods.videos) {
                        goods.videos = [];

                    }
                    goods.videos.push(url);
                }
            });

            // 删除原始的 image 属性
            delete goods.image;
        });
        tableList.value = res.data.records;
        searchParm.total = res.data.total;
        getAllType();
    }
}

// 通过二级分类标签获取整个分类类别
const getAllType = () => {
    tableList.value.forEach((goods: any) => {
        // 通过二级分类标签获取整个分类类别
        let res = getGoodsTypeBySonIdApi(goods.categoryId);
        res.then((value) => {
            goods.categoryId = value.data;  
        });
    })
}

最终效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1599839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法设计与分析实验报告c++实现(矩阵链相乘、投资问题、完全背包问题、数字三角形、最小生成树、背包问题)

一、实验目的 1&#xff0e;加深学生对分治法算法设计方法的基本思想、基本步骤、基本方法的理解与掌握&#xff1b; 2&#xff0e;提高学生利用课堂所学知识解决实际问题的能力&#xff1b; 3&#xff0e;提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 用动态…

1.2MHz,固定频率白光LED驱动器

一、产品概述 TX6216是一款升压转换器&#xff0c;设计用于通过单节锂离子电池驱动多达7个串联的白光LED。 TX6216采用电流模式&#xff0c;固定频率架构来调节LED电流&#xff0c;LED电流通过外部电流检测电阻测量。其低104mV反馈电压可降低功率损耗并提高效率。 TX6216具有…

笔试题1 -- 吃掉字符串中相邻的相同字符(点击消除_牛客网)

吃掉字符串中相邻的相同字符 文章目录 吃掉字符串中相邻的相同字符题目重现解法一&#xff1a;(基于 erase() 函数实现)解法二&#xff1a;&#xff08;利用 栈 辅助实现&#xff09;总结 题目链接&#xff1a; 点击消除_牛客网 题目重现 牛牛拿到了一个字符串。 他每次“点击…

JMeter控制器数据库获取一组数据后遍历输出

目录 1、测试计划中添加Mysql Jar包 2、添加线程组 3、添加 jdbc connection configuration 4、添加JDBC Request&#xff0c;从数据库中获取数据 5.获取数据列表&#xff0c;提取所有goodsName信息 6.通过添加控制器遍历一组数据 6.1 方式一&#xff1a;循环控制器方式 …

Vue3从入门到实战:深度掌握通信插槽slot

slot_默认插槽的概念&#xff1a; 在Vue中&#xff0c;插槽&#xff08;slot&#xff09;是一种用于在组件中插入内容的特殊技术。默认插槽是其中一种类型的插槽&#xff0c;它允许你在组件的模板中指定一个位置&#xff0c;以便在使用组件时插入自定义的内容。 想象一下你有…

Linux中安装seata

Linux中安装seata 一、准备1、环境2、下载3、上传到服务器4、解压 二、配置1、备份配置文件2、导入sql3、修改配置前4、修改配置后5、在nacos中配置 三、使用1、启动2、关闭 一、准备 1、环境 因为要在 nacos 中配置&#xff0c;要求安装并启动 nacos 。可以参考这篇博客。 …

【十一】MyBatis Plus 原理分析

MyBatis Plus 原理分析 摘要 Java EE开发中必不可少ORM框架&#xff0c;目前行业里最流行的orm框架非Mybatis莫属了&#xff0c;而Mybatis框架本身没有提供api实现&#xff0c;所以市面上推出了Mybatis plus系列框架&#xff0c;plus版是mybatis增强工具&#xff0c;用于简化My…

【JAVA基础篇教学】第十二篇:Java中多线程编程

博主打算从0-1讲解下java基础教学&#xff0c;今天教学第十二篇&#xff1a;Java中多线程编程。 多线程编程是利用多个线程同时执行任务来提高程序的效率和性能。在 Java 中&#xff0c;多线程编程可以通过继承 Thread 类或实现 Runnable 接口来实现。下面是一个简单的多线程…

IntelliJ IDEA2024 安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 IDEA&#xff08;Integrated Development Environment for Apache&#xff09; 是一款专为 Apache 开发者设计的集成开发环境。该软件提供了丰富的功能和工具&#xff0c;帮助开发者更高效地创建、调试和部署 Apache 项目。 主…

自定义类型: 结构体 (详解)

本文索引 一. 结构体类型的声明1. 结构体的声明和初始化2. 结构体的特殊声明3. 结构体的自引用 二. 结构体内存对齐1. 对齐规则2. 为啥存在对齐?3. 修改默认对齐值 三. 结构体传参四. 结构体实现位段1. 什么是位段?2. 位段的内存分配3. 位段的应用4. 位段的注意事项 ​ 前言:…

计算机系列之操作系统的系统

2、大话操作系统的启动 当按下开机键时&#xff0c;BIOS 就会开始执行 ​ BIOS 就是放在主板上 ROM 里面的一段程序。 ​ ROM Read Only Memory&#xff08;只能读取的内存&#xff09; ​ 所以 BIOS 在出厂的时候就可以直接写死在 ROM 里面。 ​ 每次开机的时候&#xff…

JavaScript 高性能编程 —— 加载和运行

JavaScript 在浏览器中的性能,可认为是开发者所要面对的最重要的可用性问题。此问题因 JavaScript 的阻塞特征而复杂,也就是说,当 JavaScript 运行时其他的事情不能被浏览器处理。 事实上,大多数浏览 器使用单进程处理 UI 更新和 JavaScript 运行等多个任务,而同一时间只能…

Python --- 在python中安装NumPy,SciPy和Matplotlib(Windows平台)

在python中安装NumPy&#xff0c;SciPy和Matplotlib(Windows平台) NumPy NumPy是Python的一个最常用最基本的扩展程序库之一&#xff0c;主要用于矩阵运算或数组计算。很多其他的python库都要依赖于NumPy才能跑。 NumPy的发展史&#xff1a; Matrix-sig 1995年&#xff0c;特殊…

设定延迟任务和定时任务并优化定时任务

一丶设定延时任务 1.设定延迟任务要求如下 ①在系统中建立easylee用户&#xff0c;设定其密码为easylee ②延迟任务由root用户建立 ③要求在5小时后备份系统中的用户信息文件到/backup中 ④确保延迟任务是使用非交互模式建立 ⑤确保系统中只有root用户和easylee用户可以执…

【Qt 学习笔记】Qt常用控件 | 按钮类控件Check Box的使用及说明

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 按钮类控件Check Box的使用及说明 文章编号&#xff1a;…

P5730 【深基5.例10】显示屏

思路&#xff1a; 此题只需要两层循环&#xff0c;通过数组映射即可求出答案 AC代码&#xff1a; #include<iostream>using namespace std;typedef long long ll; const int N 10; int a[N];int main() {ll n,m;cin >> n >> m;for(ll in;i<m;i){ll nu…

OpenHarmony实战开发-Worker子线程中解压文件。

介绍 本示例介绍在Worker 子线程使用ohos.zlib 提供的zlib.decompressfile接口对沙箱目录中的压缩文件进行解压操作&#xff0c;解压成功后将解压路径返回主线程&#xff0c;获取解压文件列表。 效果图预览 使用说明 1.点击解压按钮&#xff0c;解压test.zip文件&#xff0c…

【JavaSE】你真的了解内部类吗?

前言 本篇会详细讲解内部类的四种形式&#xff0c;让你掌握内部类~ 欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 前言 内部类介绍 实例内部类 定义 调用 静态内部类 定义 调用 匿名内部类 定义和调用1 调用方法2 …

Linux的重要命令(二)+了解Linux目录结构

目录 一.Linux的目录结构 二.查看文件内容命令 1.cat 命令 2.more 命令 3.less 命令 4.head 命令 5.tail 命令 6.拓展 head 和 tail 的其他用法 ​编辑 三.统计文件内容的命令-wc ​编辑 四.检索和过滤文件内容的命令-grep ​编辑 ​编辑 五.压缩命令 gzip 和 bz…

碳课堂|碳关税是什么?企业如何从容应对?

2023年10月1日&#xff0c;欧盟碳边境调节机制&#xff08;CBAM&#xff09;法规&#xff0c;即全球首个“碳关税”开始实施。据世界银行研究报告称&#xff0c;如果“碳关税”全面实施&#xff0c;在国际市场上&#xff0c;中国制造可能将面临平均26%的关税&#xff0c;出口量…