el-table用key解决表格数据显示不正确

el-table用key解决表格数据显示不正确

问题:三个页面差不多,只有表格的个别字段不一致。就把三个页面写在一起,用v-if判断,最后效果差强人意。切换页面的时候,列表里的数据会发生错乱。

找了好久,也没在element官网上看到什么介绍。这时候旁边大哥,说,你在table上加个key试试。于是乎成功渲染了,数据没有出现问题了。

  <el-table
      v-if="type == 1"
           :key="table"
           ref="table"
           v-loading="tableLoading"
           :data="tableData"
           @selection-change="onSelectionChange"
       >

在每次切换页面的时候,置换key就可以了。

原来key是vue中的属性,具体请看→https://cn.vuejs.org/v2/api/#key
在此只引用一段:

key 的特殊 attribute 主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes。如果不使用 key,Vue 会使用一种最大限度减少动态元素并且尽可能的尝试就地修改/复用相同类型元素的算法。而使用 key 时,它会基于 key 的变化重新排列元素顺序,并且会移除 key 不存在的元素。
有相同父元素的子元素必须有独特的 key。重复的 key 会造成渲染错误。

一些关于key的讨论→https://github.com/PanJiaChen/vue-element-admin/issues/656

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!对于在 el-select 中嵌套 el-table 表格,您可以按照以下步骤进行操作: 1. 在 el-select 中定义一个 v-model,用于绑定选中的值。 2. 在 el-select 中使用 el-option-group 或 el-option 元素,设置选项的值和显示文本。 3. 在 el-table 中使用 el-table-column 定义表格列,并使用 slot-scope 属性获取每行数据。 4. 在 slot-scope 中使用 el-option-group 或 el-option 元素来渲染表格中的下拉选项。 以下是一个简单的示例代码: ```vue <template> <div> <el-select v-model="selectedItem" placeholder="请选择"> <el-option-group v-for="group in options" :key="group.label" :label="group.label"> <el-option v-for="item in group.items" :key="item.value" :value="item.value" :label="item.label"></el-option> </el-option-group> </el-select> <el-table :data="tableData"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column label="选择"> <template slot-scope="scope"> <el-select v-model="scope.row.selectedItem" placeholder="请选择"> <el-option-group v-for="group in options" :key="group.label" :label="group.label"> <el-option v-for="item in group.items" :key="item.value" :value="item.value" :label="item.label"></el-option> </el-option-group> </el-select> </template> </el-table-column> </el-table> </div> </template> <script> export default { data() { return { selectedItem: '', options: [ { label: '选项组1', items: [ { value: 'option1', label: '选项1' }, { value: 'option2', label: '选项2' }, ], }, { label: '选项组2', items: [ { value: 'option3', label: '选项3' }, { value: 'option4', label: '选项4' }, ], }, ], tableData: [ { name: '张三', age: 20, selectedItem: '' }, { name: '李四', age: 30, selectedItem: '' }, { name: '王五', age: 25, selectedItem: '' }, ], }; }, }; </script> ``` 在上面的示例中,el-select 组件用于选择选项,el-table-column 中的 el-select 组件用于选择表格中每一行的选项。通过 v-model 绑定选中的值,可以实现选择不同的选项。 希望这个示例对您有所帮助!如有任何疑问,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值