I'm trying to find a solution to fix this error that occurs when using mantine react table. I get the same errors when trying to run test cases in jest.
Warning: Encountered two children with the same key, 0_attributes() => row.getValue(columnId). Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version.
export const CreatorLookupsTable = ({
isLoading,
tableData,
error,
limit,
addCreator,
}: Props) => {
const data = tableData.data;
const ErrorOrNoResult = () => {
return limit
? ''
: error
? 'Search results will be shown here.'
: Object.keys(data).length === 0
? 'No creators found. Check username spelling and/or platform chosen.'
: 'No creators found.';
};
const columns = [
{
accessorKey: 'attributes.method',
header: 'Source',
enableSorting: true,
Cell: ({ cell, rowIndex }: any) => (
<p
key={`source-${cell.getValue()}-${rowIndex}`}
style={{
color: '#5E5ADB',
margin: '0px',
textTransform: 'capitalize',
}}
>
{cell.getValue()}
</p>
),
},
{
accessorKey: 'attributes',
header: 'Creators',
enableSorting: true,
Cell: ({ renderedCellValue, cell, rowIndex }: any) => (
<Box
key={`creators-${cell.getValue()}-${rowIndex}`}
sx={{
display: 'flex',
alignItems: 'center',
}}
>
<Avatar
src={renderedCellValue[renderedCellValue.method]?.logo}
size={20}
radius={100}
sx={{
marginRight: '5px',
}}
/>
<p>{renderedCellValue[renderedCellValue.method]?.displayName}</p>
</Box>
),
},
{
accessorKey: 'attributes',
header: 'Reach',
enableSorting: true,
Cell: ({ renderedCellValue, cell, rowIndex }: any) => (
<span
key={`reach-${cell.getValue()}-${rowIndex}`}
style={{
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
width: '50px',
backgroundColor: '#F4F4F5',
borderRadius: '16px',
padding: '2px 8px ',
fontWeight: 400,
}}
>
{formatLargeNumber(
renderedCellValue[renderedCellValue.method]?.statistics.views
)}
</span>
),
},
{
accessorKey: 'videos',
header: 'Videos',
enableSorting: true, // disable sorting for this column
Cell: ({ cell, rowIndex }: any) => (
<span
key={`videos-${cell.getValue()}-${rowIndex}`}
style={{
color: '#3538CD',
display: 'flex',
justifyContent: 'center',
width: '50px',
alignItems: 'center',
padding: '2px 8px ',
backgroundColor: '#EEF4FF',
borderRadius: '16px',
fontWeight: 400,
}}
>
{formatLargeNumber(cell.getValue() as number)}
</span>
),
},
{
id: 'button',
header: '',
enableSorting: false,
Cell: ({ cell, rowIndex }: any) => (
<Button
key={`add-${cell.getValue()}-${rowIndex}`}
style={{
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
width: '40px',
height: '16px',
backgroundColor: '#6FCF97',
fontSize: '8px',
textTransform: 'uppercase',
fontFamily: 'Alegreya Sans',
fontWeight: 700,
}}
// onClick={() => addCreator()}
>
add
</Button>
),
},
];
const table = useMantineReactTable({
columns,
data,
enableSorting: true,
enableColumnActions: false,
enableColumnFilters: false,
enablePagination: false,
enableFullScreenToggle: false,
enableDensityToggle: false,
enableHiding: false,
enableGlobalFilter: false,
state: {
isLoading: isLoading,
},
mantinePaperProps: {
sx: (theme) => ({
border: '0px solid !important',
}),
},
mantineTableHeadCellProps: {
sx: {
fontFamily: '__Alegreya_Sans_d501ea',
fontSize: '14px',
fontStyle: 'normal',
fontWeight: 400,
lineHeight: '20px',
textTransform: 'uppercase',
padding: '0px 10px !important',
},
},
mantineTableBodyCellProps: {
sx: {
padding: '0px 10px !important',
fontFamily: '__Alegreya_Sans_d501ea',
},
},
localization: {
noRecordsToDisplay: ErrorOrNoResult(),
},
});
return (
<div data-testid={'creator-table-test-id'}>
<MantineReactTable table={table} />
</div>
);
};
I have tried to add the indexes into each columns like so key={add-${cell.getValue()}-${rowIndex}} and each column has it's own unique string value but i'm not sure if i implemented it correctly. please correct me if im wrong
It happens because you have defined multiple columns with the same
accessorKey.In MRT v6 you can resolve this issue by providing a unique
idto the column definition, e.g.