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

vue3动态的控制表格列的展示简单例子

动态的控制表格列的展示,

  • 可以勾选和取消某一列的显示
  • 本地存储上一次的配置
  • 表格内容支持通过slot自定义内容
    在这里插入图片描述

例子1

<script setup>
import { reactive, ref, watch } from "vue";
import one from "./components/one.vue";
import One from "./components/one.vue";
const tableData = [{id: 1,age: "2016-05-03",name: "Tom",address: "No. 189, Grove St, Los Angeles",},{id: 2,age: "2016-05-02",name: "Tom",address: "No. 189, Grove St, Los Angeles",},{id: 3,age: "2016-05-04",name: "Tom",address: "No. 189, Grove St, Los Angeles",},{id: 4,age: "2016-05-01",name: "Tom",address: "No. 189, Grove St, Los Angeles",},
];const config = {name: {label: "name",prop: "name",canHidde: false,},age: {label: "age",prop: "age",canHidde: false,},address: {label: "address",prop: "address",canHidde: false,redner: One,},id: {label: "id",prop: "id",canHidde: true,},
};let state = reactive({});
if (localStorage.getItem("state")) {//JDON.parse()解析时可能会出现解析错误的情况,要使用try catch包裹try {// reactive不能直接复制整个对个,可以重新复制reactivestate = reactive(JSON.parse(localStorage.getItem("state")));} catch (e) {console.log(e);}
} else {Object.keys(config).forEach((key) => {state[key] = true;});
}
const setState = (state) => {localStorage.setItem("state", JSON.stringify(state));
};watch(state, (val) => {setState(val);
});
</script><template><div><div v-for="item in Object.keys(state)"><div><span>{{ config[item].label }}</span><el-checkboxv-model="state[item]":disabled="config[item].canHidde"></el-checkbox></div></div><el-table :data="tableData" style="width: 100%"><template v-for="item in Object.keys(state)" :key="item"><!---v-bind可以快速绑定多个变量--><el-table-column v-bind="config[item]" v-if="state[item]"><template #header><div><span>{{ config[item].label }}</span><el-checkboxv-model="state[item]":disabled="config[item].canHidde"></el-checkbox></div></template><template v-if="config[item].redner" #default="scoped"><component :is="config[item]?.redner" :scoped="scoped"></component></template></el-table-column></template></el-table></div>
</template><style scoped></style>

例子2 ,插槽使用 h函数渲染

  • 模板中的插值语法 {{ }} 的作用是:把表达式的值转换成字符串,插入到 HTML 中。

  • h() 返回一个 VNode 对象, 让 Vue 把一个 VNode 对象 转成字符串。Vue 内部会尝试 JSON.stringify(vnode),但 VNode 对象中包含循环引用(如 vnode.component.vnode 指回自己),所以就会报错:
    在这里插入图片描述

  • <component :is="..."> 不仅可以切换组件,还可以直接渲染 VNode

<script setup>
import { reactive, ref, watch, h } from "vue";
const config = {name: {label: "name",prop: "name",canHidde: false,},age: {label: "age",prop: "age",canHidde: false,},address: {label: "address",prop: "address",canHidde: false,render: (scoped) => {return h("div",{style: {color: "red",},},scoped.row.address);},},id: {label: "id",prop: "id",canHidde: true,},
};
</script><template><div><el-table :data="tableData" style="width: 100%"><template v-for="item in Object.keys(state)" :key="item"><el-table-column v-bind="config[item]" v-if="state[item]"><template #header><div><span>{{ config[item].label }}</span><el-checkboxv-model="state[item]":disabled="config[item].canHidde"></el-checkbox></div></template><template v-if="config[item].render" #default="scoped"><!--{{config[item].render(scoped)}}直接这样使用会报错-->    <component :is="config[item].render(scoped)" /></template></el-table-column></template></el-table></div>
</template>

在这里插入图片描述

http://www.xdnf.cn/news/17993.html

相关文章:

  • 基于FPGA的实时图像处理系统(1)——SDRAM回环测试
  • XC6SLX45T-2FGG484C Xilinx AMD Spartan-6 FPGA
  • 利用爬虫按图搜索淘宝商品(拍立淘)实战指南
  • vue:vue3 watch 属性
  • FastDeploy2.0:Prometheus3.5.0通过直接采集,进行性能指标分析
  • 嵌入式硬件篇---电平转换电路
  • 【JavaEE】(13) Spring Web MVC 入门
  • 大模型——使用dify搭建SOP检索问答Agent
  • 外出业务员手机自动添加报价单​——仙盟创梦IDE
  • 链表。。。
  • 【C#补全计划】Lambda表达式
  • java 面试八股集锦
  • 企业级Java项目金融应用领域——银行系统(补充)
  • 力扣hot100 | 矩阵 | 73. 矩阵置零、54. 螺旋矩阵、48. 旋转图像、240. 搜索二维矩阵 II
  • PMP-项目管理-十大知识领域:整合管理-协调各知识领域,确保项目目标一致
  • webpack
  • 架构调整决策
  • 基础数据结构
  • 027 动静态库 —— 静态库
  • 马拉松|基于SSM的马拉松报名系统微信小程序的系统设计与实现(源码+数据库+文档)
  • uniapp:微信小程序使用Canvas 和Canvas 2D绘制图形
  • 给纯小白的Python操作Word笔记
  • 使用npm/pnpm自身安装指定版本的pnpm
  • 【论文笔记】Multi-Agent Based Character Simulation for Story Writing
  • Vue3从入门到精通:5.2 Vue3构建工具与性能优化深度解析
  • 同创物流学习记录2·电车光电
  • 【八股】计网-计算机网络-秋招
  • Windows MCP.Net:革命性的 .NET Windows 桌面自动化 MCP 服务器
  • 分享一个大数据的源码实现 基于Hadoop的二手车市场数据分析与可视化 基于Spark的懂车帝二手车交易数据可视化分析系统
  • ABB焊接机器人弧焊省气