PrimeVue -reorderableColumns上的数据表重复键错误

s4n0splo  于 2023-01-21  发布在  Vue.js
关注(0)|答案(1)|浏览(100)

我有一个奇怪的行为下面的数据表:

<DataTable
    :scrollable="true"
    :value="shipments"
    :totalRecords="shipments.length"
    :reorderableColumns="true"
    :alwaysShowPaginator="false"
    :paginator="true"
    :rows="10"
    :resizableColumns="true"
    columnResizeMode="fit"
    sortMode="multiple"
    :stripedRows="true"
    removableSort
    dataKey="reference"
    responsiveLayout="scroll">
    <template #empty> No records found </template>
    <Column field="reference" header="Shipment Number" :sortable="true" frozen />
    <Column header="Shipper" style="text-transform: capitalize">
        <template #body="slotProps">
            {{ slotProps.data.shipper.name.toLocaleLowerCase() }}
        </template>
    </Column>
</DataTable>

如果我尝试重新排序(拖动)列,我会得到下面的错误。每次我尝试重新排序,reference列被添加到表中。
[Vue警告]:更新期间发现重复的键:"reference"确保密钥是唯一的。
如果删除Shipper列的这一部分:

<template #body="slotProps">
     {{ slotProps.data.shipper.name.toLocaleLowerCase() }}
</template>

并且只需使用field="shipper.name"引用托运人名称,它就能正常工作,没有任何错误。
我哪里做错了?

oyjwcjzk

oyjwcjzk1#

阅读文档,我发现在使用reorderColumns功能时遗漏了一个重要部分。
我需要设置一个columnKey,如果特定的列没有一个字段定义为每个文档:
如果列没有字段,请改用columnKey,因为在启用重新排序时,列必须具有唯一键。
我加了这个,现在可以用了:

<Column header="Shipper" columnKey="shipper" style="text-transform: capitalize">
    <template #body="slotProps">
        {{ slotProps.data.shipper.name.toLocaleLowerCase() }}
    </template>
</Column>

相关问题