【问题标题】:vuetify: v-data-table key undefined sort clickvuetify: v-data-table key undefined sort click
【发布时间】:2020-09-22 18:04:41
【问题描述】:

然后使用带有多个数据的 v-data-table,如果 onclick 排序在控制台中有一条消息“TypeError: Cannot read property 'key' of undefined”,请帮助我

vue_2.6.11.min.js:6 TypeError: Cannot read property 'key' of undefined
    at ir (vue_2.6.11.min.js:6)
    at vue_2.6.11.min.js:6
    at x (vue_2.6.11.min.js:6)
    at vue_2.6.11.min.js:6
    at x (vue_2.6.11.min.js:6)
    at vue_2.6.11.min.js:6
    at x (vue_2.6.11.min.js:6)
    at vue_2.6.11.min.js:6
    at x (vue_2.6.11.min.js:6)
    at a.__patch__ (vue_2.6.11.min.js:6)

【问题讨论】:

标签: vue.js vuetify.js


【解决方案1】:

问题是您的数据中有重复的键。如果您希望表格的所有功能(尤其是排序)正常工作,您必须为每一行提供一个唯一键。

您的示例的简单解决方法是:

data: () => ({
  // assign a unique `key` to each element
  table_body: [/* your data here */].map((item, key) => ({...item, key}))
})

在模板中:

<v-data-table ref="tablaReporteGenerico"
              item-key="key"
              ... />

看到它在工作here


虽然将indexes 用作key 有效,但键入集合的行业标准是uuid(或类似):

  • npm i uuid
  • (如果使用打字稿)npm i @types/uuid -D
  • 在组件中:import { v4 as uuid } from 'uuid'
  • 在数据中:[/* your items */].map(item =&gt; ({ ...item, key: uuid() }))

在 JavaScript 中处理数组时,唯一标识符是必须的,因为数组中元素的顺序在不同的实现中是无法保证的。我还要补充一点,在 JavaScript 中使用数组也是必须的,因为它们比任何替代方法都快。

【讨论】:

  • 非常感谢,你救了我!
  • 我试过这个并且有一个唯一的 id 但身体仍然不会呈现它preview
  • @Fahmi,我建议将其作为一个单独的问题提出并提供minimal reproducible example
猜你喜欢
  • 2020-02-26
  • 2019-11-10
  • 2020-12-13
  • 2019-11-19
  • 1970-01-01
  • 2021-02-11
  • 2019-03-21
  • 2021-02-09
  • 2021-07-12
相关资源
最近更新 更多