Отображать элементы массива в подстроке (таблица реакции)

Я использую реагирующую таблицу, и мне нужно создать подстроки со структурой данных ниже. Я успешно создал подстроки для каждого объекта в массиве данных. Однако каждый объект в массиве данных содержит другой массив «типов».

Как мне заставить каждую строку перечислять имена «типов» в качестве подстрок?

Мой код пока ниже:

Стол:

import React from 'react';
import ReactTable from 'react-table';

const Table = (props) => {
  const subComponent = row => {
    return (
      <div>
        Names of "types" here respectively for each object in data array
        (no column headers or anything needed)
      </div>
    );
  };

  return (
    <ReactTable data = { props.data }
      columns = { props.columns }
      SubComponent = { subComponent } />
  );
};

export default Table;

Структура данных:

const data = [
  {
    id: '12345',
    name: 'sports',
    types: [
      {
        name: 'basketball',
        id: '1'
      },
      {
        name: 'soccer',
        id: '2'

      },
      {
        name: 'baseball',
        id: '3'
      }
    ]
  },
  {
    id: '678910',
    name: 'food',
    types: [
      {
        name: 'pizza',
        id: '4'
      },
      {
        name: 'hamburger',
        id: '5'

      },
      {
        name: 'salad',
        id: '6'
      }
    ]
  }
];

Это может помочь. codeandbox.io/s/relaxed-frost-kln0o?file=/src/App.js:1716-2‌​034

Upulie Han 18.01.2022 15:41
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
6 980
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вот хороший пример того, как это сделать https://codesandbox.io/s/github/tannerlinsley/react-table/tree/master/archives/v6-examples/react-table-sub-components

По моему мнению, ваш код будет выглядеть так:

import React from 'react';
import ReactTable from 'react-table';

const Table = (props) => {
  const subComponent = row => {
    return (
      <div>
        row.Original.types.map((type, idx) => (
           <div>{{type.id}}</div>
           <div>{{type.name}}</div>
        ))
      </div>
    );
  };

  return (
    <ReactTable data = { props.data }
      columns = { props.columns }
      SubComponent = { subComponent } />
  );
};

export default Table;

Вы можете переписать метод getSubRows для опций useTable. Что-то вроде этого:

const getSubRows = useCallback((row) => {
  return row.types || [];
}, []);

Не могли бы вы уточнить пример?

Upulie Han 18.01.2022 10:41

Другие вопросы по теме