位置: IT常识 - 正文

Vue 3结合element plus(问题总结一)之 table数据更新而视图不跟新(vue3.0 element ui)

编辑:rootadmin
Vue 3结合element plus(问题总结一)之 table数据更新而视图不跟新 Vue 3结合element plus(问题总结一)之 table数据更新而视图不更新前言Table组件问题原因及解决小案例前言

推荐整理分享Vue 3结合element plus(问题总结一)之 table数据更新而视图不跟新(vue3.0 element ui),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue3.0支持element,vue结合elementui,vue3.0 element,vue结合elementui,vue3+element,vue结合elementui,vue3+element,vue3+elementplus,内容如对您有帮助,希望把文章链接给更多的朋友!

应为做项目用到vue3,就结合element plus来做,但是碰到一些问题,上网搜几乎是vue2 结合element ui的相似问题。所以自己也是搞了蛮久的,如果有相同的问题希望能帮助到各位,希望可以点赞加搜藏一下。

Table组件

讲一下Table组件,先看下官网给的基础代码和效果。

<template> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="date" label="Date" width="180" /> <el-table-column prop="name" label="Name" width="180" /> <el-table-column prop="address" label="Address" /> </el-table></template><script lang="ts" setup>const tableData = [ { date: '2016-05-03', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', }, { date: '2016-05-02', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', }, { date: '2016-05-04', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', }, { date: '2016-05-01', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', },]</script>Vue 3结合element plus(问题总结一)之 table数据更新而视图不跟新(vue3.0 element ui)

可以很清楚的明白其中的组件的使用。

问题原因及解决

当我更新数组绑定的tableData的时候,视图却没有更新。后面上网搜索问题,找了很多方法都不行。后来才发现犯了一个很低级的错误。错误原因

tableData不是代理对象,使用直接将新的值赋给tableData,视图不会更新后来将table定义为代理对象,还是失败的原因是数组的改变有些情况vue3响应监测不到

如何将接口请求到的列表数据赋值给响应数据 呢? 失败案例

const arr = reactive([]);const load = () => { const res = [2, 3, 4, 5];//要更新的数据 // 方法1 失败,直接赋值丢失了响应性 // arr = res; // 方法2 这样也是失败 // arr.concat(res); // 方法3 可以,但是很麻烦 res.forEach(e => { arr.push(e); });};

vue3 使用proxy,对于对象和数组都不能直接整个赋值。

成功案例

// 方案1:创建一个响应式对象,对象的属性是数组const data = reactive({ arr: []});data.arr = [1, 2, 3]// 方案2: 使用ref函数const data = ref([])data.value = [1, 2, 3]// 方案3: 使用数组的push方法const arr = reactive([])arr.push(...[1, 2, 3])小案例

通过一个小案例来验证一下。

<template > <el-button @click="updateView()">更新视图</el-button> <div id="shoplist"> <el-table ref="multipleTableRef" :data="data.arr" style="width: 100%" height="90%" stripe @selection-change="handleSelectionChange" > <el-table-column type="selection" width="40" /> <el-table-column property="shopname" label="店名" width="120" show-overflow-tooltip/> <el-table-column property="score" label="评分" sortable width="80" /> <el-table-column property="sales" label="销量" sortable width="80" /> <el-table-column property="type" label="类型" width="70" /> </el-table> </div></template><script>import { ref } from 'vue' ;import {ElTable} from 'element-plus'import { reactive } from '@vue/reactivity';export default { setup () { const multipleTableRef = ref(null); const multipleSelection = ref([]); var handleSelectionChange =(val)=>{ multipleSelection.value = val; } //刚开始没有数据 var data = reactive({ arr:[] }) //更新数据 var updateView = () =>{ data.arr = [ { id:1, shopname:"沙县小吃", score:5.5, sales:1200, hh:12, type:"快餐" }, { id:2, shopname:"法式牛排餐厅", score:7.5, sales:2400, hh:12, type:"西餐" }, { id:3, shopname:"沙县大吃", score:6.5, sales:200, hh:12, type:"快餐" }, { id:4, shopname:"南昌瓦罐汤", score:6.9, sales:2400, hh:12, type:"快餐" }, ] } return { data, updateView } },}</script><style> #shoplist{ position: fixed; z-index: 1001; width: 390px; height: 100%; min-height: 100vh; right: 0px; bottom: 0px; padding-top: 5px; background-color: #f2f2f2; transition: 1s; /* overflow: hidden; */ border: 1px solid #333; }</style>

刚开始没有数据,右侧就显示No Data,当我点击更新视图按钮时。就可以看到列表了(数据是瞎编的,不要注重细节。) 同样的第二种和第三种方式也可以。

...<el-table ref="multipleTableRef" :data="data"这里改成了data哦 style="width: 100%" height="90%" stripe @selection-change="handleSelectionChange" > ... var data = ref([]) //更新数据 var updateView = () =>{ data.value = [ ...
本文链接地址:https://www.jiuchutong.com/zhishi/283880.html 转载请保留说明!

上一篇:温尼伯湖沿岸的春日冰雪,曼尼托巴 (© Mike Grandmaison/Jaynes Gallery/DanitaDelimont.com)(温尼伯湖成因)

下一篇:高德地图API-获取位置信息的经纬度(高德地图api获取当前经纬度的城市地图)

  • 预缴所得税报表填错啦,年报可以修改吗
  • 房屋合同印花税税率属于个人交的吗
  • 一般纳税人科技公司发票是几个点
  • 人工费怎么入账
  • 财务汽车折旧年限的最新规定2020
  • 实控人变更是利好吗
  • 度假村功能
  • 股权评估与资产评估的关系
  • 预售款计入收入吗
  • 库存商品检验合格标准
  • 加计扣除要交企业所得税吗
  • 个人取得的拆迁款需要缴纳个人所得税吗
  • 一般纳税人销售旧货
  • 促销费属于哪个税目
  • 关联企业间融资方式
  • 商业承兑汇票适用于
  • 生产活动产生的正的消费外部效应
  • 公司哪些发票可以抵税
  • 七彩虹主板 wol
  • 成本核算的意义是什么
  • 科普笔记本电脑怎样
  • 全网最详细的破解卡密软件教程[2021首发]
  • 计算机存储信息的基本单位是( )A字长B速度C内存D字节
  • 固定资产和低值易耗品的登记和管理咋弄?
  • 销售货款未收回应该从工资中扣除吗
  • 会计费用科目分类表
  • 工业企业应付会计工作内容
  • 哪种审计证据可以查出来
  • 更改税种需要哪些资料
  • ai绘画图片
  • declare -i
  • 工作服计入什么明细科目
  • 营业额增长率公式
  • 计提工会经费怎么做账务处理
  • 研发支出是资产类会计科目吗
  • 对方代垫包装费怎么做分录
  • 积分换购活动
  • sQlite常用语句以及sQlite developer的使用与注册
  • 不发工资可以先报警吗
  • 资产处置损益明细表货币资金怎么填
  • 定额的个体户怎么交税
  • 长期借款期末余额表示什么
  • 解决在sql脚本中怎么写
  • 工业企业销售分录
  • 应收票据周转率怎么分析
  • 法院强制执行根本没用
  • 每月增值税怎么做账
  • 发票缴销后还要保存吗
  • 可供出售金融资产是指什么
  • 长期股权投资的成本法和权益法区别
  • 航天信息服务费280元如何申报
  • 借用别的公司资质的协议范本
  • mysql闪退怎么回事
  • 各个都很实用:win7系统电脑日常小技巧
  • imac固态
  • ubuntu系统如何
  • mac安装mysql详细教程
  • linux targz
  • SpamSubtract.exe - SpamSubtract是什么进程
  • windows8无线网络选项消失不见
  • win10系统怎么关闭病毒防护
  • os x 10.10.5
  • linux groupmod命令参数及用法详解(linux修改组信息命令)
  • pphelper是什么文件
  • win7如何限制网速
  • win8系统安装条件
  • windows识别码
  • 5.2光源
  • css网站布局实录 pdf
  • css网页布局中注释是什么
  • 物理引擎百科
  • js制作网页制作步骤
  • Android---59---Toast的使用
  • [置顶] 快来貌相则不达很好skmzx5
  • javascript核心技术
  • js判断ua
  • 营改增后租金如何交税
  • 车辆登记指的是什么
  • 置换买新车划算吗
  • 深圳机打发票查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设