【el-table】报Error: if there’s nested data, rowKey is required原因及解决方法
报错
版本:
element-ui: 2.7.0
原因:
row-key
对应的值一定不能为空(如null
,false
,0
,undefined
), 如果为空一定要手动添加一个唯一的随机码
解决方法
在获取获取接口数据时,先检查一遍数据,确保数据中所有
rowKey
的值都不为空值,再将数据赋值到对应变量
<template><el-table:data="data"row-key="id"lazy:load="load":tree-props="{children: 'children', hasChildren: 'hasChildren'}"><el-table-columntype="index"label="#"/><el-table-columnprop="name"label="名称"/><el-table-columnprop="detail"label="详情"/></el-table>
</template><script> import { api } from '@/api/index' export default {name: '',data() {return {data: []}}method: {async load(row, treeNode, resolve) {const { records } = await api()// 可以先在回调之前将records中的数据检查一遍,确保row-key(id)不为空,再调用resolverecords.forEach((item, index) => {const { id } = item// 如果rowKey(id),那么随机生成一个idif (!id) {this.$set(item, 'id', Math.random() * 10000 + index)}})// 确保都有rowKey后,调用回调resolve(records)}} } </script>