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

后台管理系统中选项卡的动态渲染

动态渲染选项卡

  1. 其中router-link是为了当点击选项卡时跳转到选项卡所在的列表

  1. 选项卡需要动态渲染,其中active是当选中后激活选中的样式

  1. 为图标添加点击删除事件

  1. 在状态机配置tabMenu(为了动态渲染)

  • 需要在tabMenu添加:active、title、path、id四个属性

  • 为了动态渲染组件,在mutations里面写addTabMenuData方法

  1. 在动态添加选项卡时需要判断选项卡是否重复(复杂的逻辑不写在mutations中)

  1. addTabMenuData方法在将就收到的数据push到state里面之前先将state.tabMenu中的active变为false

注意

这里将active变为false是因为我们点击菜单就往tabMenu中增加点击的菜单,如果不将其改为false,则点击下一个菜单,上个菜单还是被激活的样式。

 addTabMenuData(state,obj){//先遍历tabMenu,然后将里面的元素的active属性变为flase,然后再pushstate.tabMenu.forEach(item=>item.active=false)state.tabMenu.push(obj)},

5. 在菜单页面添加check点击事件,为的是将菜单的名字,id,地址,权限、状态(active)全部传给mutation里面addTabMenuData的方法

注意

这里需要将active设置为true,因为当点击菜单时,触发点击后的样式

c1:判断菜单是否重复,使用find,当checkItme里面有元素说明菜单重复

c2: 通过commit给addTabMenuData传参

 constcheckItem=tabMenu.find(element=>element.title==item.title)if(checkItem){this.$message({message: `${item.title}已经被选择了`,type: 'warning'});}else{this.$store.commit('addTabMenuData',obj)}

6. 在选项卡组件中根据$store.state.tabMenu拿取数据,然后根据数据动态渲染

状态机的代码:

 importVuefrom'vue';importVuexfrom'vuex';import$httpfrom'../request/http'//挂载插件Vue.use(Vuex)​exportdefaultnewVuex.Store({state:{tabMenu:[//首页默认存在,所以保存首页{_id:1,active:true,title:'首页',path:'/home'},]},​mutations:{//mutation保证一个原则,尽量不要将业务写到里面//点击菜单后动态往tabmenu数组中增加一个菜单addTabMenuData(state,obj){//先遍历tabMenu,然后将里面的元素的active属性变为flase,然后再pushstate.tabMenu.forEach(item=>item.active=false)state.tabMenu.push(obj)},deleteTabMenuData(state,id){constnewTabMenu=state.tabMenu.filter(item=>item._id!=id)newTabMenu[newTabMenu.length-1].active=truestate.tabMenu=newTabMenu}},})

选项卡的代码:

 <template><divclass="box"><ul><liv-for="item in $store.state.tabMenu":key="item._id":class="{active:item.active}">​<router-linkv-if="item.path"class="menu" :to="item.path"><span>{{item.title}}</span></router-link>​<i@click="deleteTab(item._id)"class="el-icon-close"></i>​</li></ul></div></template>​<script>exportdefault {methods:{deleteTab(id){this.$store.commit('deleteTabMenuData',id)consttabMenus=this.$store.state.tabMenuconstlastTabMenu=tabMenus[tabMenus.length-1];this.$router.push({path:lastTabMenu.path})}}}</script>

http://www.lryc.cn/news/9810.html

相关文章:

  • 网络层重点协议之IP协议(IPv4)
  • CentOS Stream 8配置DNS
  • 【roLabelImg】windows下旋转框标注软件安装、使用、rolabelimg打包成exe
  • 2023美赛F题:绿色经济
  • 华为OD机试 - 剩余可用字符集 | 备考思路,刷题要点,答疑 【新解法】
  • “笨办法”学Python 3 ——练习 40. 模块、类和对象
  • 自动驾驶:BEVDet
  • vue的组件通信
  • Typescript的定义及使用优势
  • 正则验证:手机号码验证
  • 视频融合 flv流格式对接(上)
  • 提问:影视剪辑解说都是怎样配音的,软件合成还是自己配音?
  • 基于RK3588的嵌入式linux系统开发(二)——uboot源码移植及编译
  • excel报表技巧:几个关于汇报演示方面的小功能
  • 【数据结构与算法】Manacher算法
  • 【CMake】CMake构建C++代码(一)
  • 让我们,从头到尾,通透I/O模型
  • Word控件Spire.Doc 【Table】教程(16):C#/VB.NET:在 Word 表格中插入或提取图像
  • C++如何实现系统语言切换功能,MessageBox的确认/取消按钮语言显示如何跟程序一致
  • 计算机组成原理学习笔记:循环冗余校验码
  • Educational Codeforces Round 143 (Rated for Div. 2) A — C
  • 【Unity VR开发】结合VRTK4.0:将浮点数从交互器传递到可交互对象
  • 【图像分类】基于PyTorch搭建卷积神经网络实现MNIST手写数字识别(附项目完整代码)
  • 4.4 MQC
  • ClickHouse列存储(十一)—— ClickHouse
  • 公司来了个卷王,真让人奔溃
  • 什么是refresh?Spring refresh 流程
  • Python登陆系统
  • 【新2023】华为OD机试 - 重组字符串(Python)
  • 视频监控流程图