Как отобразить свойство вложенного объекта внутри массива внутри другого массива в MuiDatatables? - PullRequest
0 голосов
/ 05 марта 2020
data: [{
       0: {
          item: {
              attributes: [
                  {0},
                  {1},
                   2: 
                       id: 1,
                       key:"Some String",
                       value: "23423"
            ]
        }  
    }
}]

    {
            label: 'effectiveFrom',
            name: 'item.effectiveFrom',
            options: {
              filter: true,
              sort: true
            },
          },
          {
            label: 'Vendors',
            name: 'item.attributes[2].value',
            options: {
              filter: true,
              sort: true
            },
          }

выше столбцы и их параметры, использующие MuiDatatables, я думал, что использование item.attributes[2].value выведет строку, но это не

Если кто-то может помочь, это было бы очень полезно !

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

Что действительно сработало, так это выбор объекта на основе ключа, а затем возвращение значения, связанного с этим ключом


    {
                label: 'Vendors',
                name: 'item.attributes',
                options: {
                  filter: true,
                  sort: true,
                  customBodyRender: (value: any) => {
            return value.map( (val: any, key: any ) => {
              if(val.key === "Some String") {
                return <Chip label={val.value} key={key}/>;
              }
            })
          }
                },
              }

0 голосов
/ 06 марта 2020

Что-то вроде этого может работать?

{
  label: 'Vendors',
  name: 'item',
  options: {
    filter: true,
    sort: true,
    customBodyRender: (item, meta) => (<>${item.attributes[2].value}</>),
  },
}

Но я думаю, что у MuiDataTables может быть мягкое требование к уже сглаживаемым данным.

Из документов:

Данные, использованные для описания таблицы. Должен быть либо массивом, содержащим объекты пар ключ / значение со значениями, которые являются строками или числами, либо массивами строк или чисел (например: data: [{"Name": "Joe", "Job Title": "Plumber", "Возраст": 30}, {"Имя": "Джейн", "Должность": "Электрик", "Возраст": 45}] или данные: [["Джо", "Сантехник", 30], [" Джейн "," Электрик ", 45]]) Использование произвольных объектов в качестве данных не поддерживается и не рекомендуется. Попробуйте вместо этого использовать идентификаторы и сопоставление с данными внешних объектов в пользовательских средствах визуализации, например const data = [{"Name": "Joe", "ObjectData": 123}] -> const dataToMapInCustomRender = {123: {foo: 'bar', baz: 'qux', ...}}

Вы всегда можете преобразовать его самостоятельно, прежде чем передать его на стол.

...