Как объединить React TableCells внутри функции карты?

Итак, я пытаюсь создать таблицу с material-ui, в которой строки w1 и w2 объединены по вертикали, но я не могу найти решение. Использование rowSpan, когда таблица жесткого кодирования вручную работает нормально, но когда я использую ее внутри функции карты, она создает 4 столбца с объединенными строками одного и того же элемента. Мне нужно сопоставить данные, потому что в этой таблице будет много строк, и жесткое кодирование всех строк нецелесообразно.

Любое предложение, чтобы решить эту проблему?

<TableBody>
    {data.data.map((row, i) => (
        <TableRow key = {row.i}>
            <TableCell className = {classes.fontEditable} component = "th" scope = "row">
                {row.x1}
            </TableCell>
            <TableCell className = {classes.fontEditable} align = "right">
                {row.x2}
            </TableCell>
            <TableCell rowSpan = {4} className = {classes.fontEditable} align = "right">
                {row.w1}
            </TableCell>
            <TableCell rowSpan = {4} className = {classes.fontEditable} align = "right">
                {row.w2}
            </TableCell>
            <TableCell className = {classes.font} align = "right">
                {row.t}
            </TableCell>
        </TableRow>
    ))}
</TableBody>

Ожидаемый результат

Как объединить React TableCells внутри функции карты?

Фактический результат

Как объединить React TableCells внутри функции карты?

Поведение ключевого слова "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
0
1 354
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

проблема: он создает ячейки w1 и w2 в каждой строке из-за функции карты

решение: вы можете выполнить условие if для печати w1 и w2 для первого только следующим образом:

<TableBody>
{data.data.map((row, i) => (
    <TableRow key = {row.i}>
        <TableCell className = {classes.fontEditable} component = "th" scope = "row">
            {row.x1}
        </TableCell>
        <TableCell className = {classes.fontEditable} align = "right">
            {row.x2}
        </TableCell>
        {i === 0? 
           <TableCell rowSpan = {4} className = {classes.fontEditable} align = "right">
             {row.w1}
           </TableCell>
           <TableCell rowSpan = {4} className = {classes.fontEditable} align = "right">
             {row.w2}
           </TableCell>
        :null}
        <TableCell className = {classes.font} align = "right">
            {row.t}
        </TableCell>
    </TableRow>
))}

Мне просто нужно было использовать это троичное выражение для каждой ячейки таблицы, потому что обе ячейки в одном выражении вызывают ошибку синтаксического анализа. Однако это решило мою проблему, спасибо :)

Deivydas Kinderis 27.03.2019 15:44

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