Один из самых простых способов отделить данные от HTML-документов — сохранить их в формате JSON. JSON популярен и с ним легко работать, особенно в JavaScript.
В React имеет смысл обслуживать данные JSON через таблицы с помощью компонента. Этот компонент сможет создать таблицу, которая масштабируется с данными JSON. Результирующая таблица может иметь столько строк, сколько необходимо, поскольку данные не являются жестко запрограммированными.
Что тебе понадобится
Вам понадобится установленный на вашем компьютере Node.js, чтобы следовать этому руководству, и базовое понимание того, как работает React.
Перед созданием таблицы вам необходимо создать новый проект React если у вас его нет.
Создание данных JSON
В таблице будут использоваться данные, хранящиеся в файле JSON. Ты можешь получить эти данные из конечной точки API в реальном приложении.
В папке src создайте новый файл с именем данные.json и добавьте следующее:
[{
"я бы": 1,
"Имя": "Этельред",
"фамилия": "Медленно",
"Эл. адрес": "[email protected]
"
},{
"я бы": 2,
"Имя": "Рета",
"фамилия": "Вулмер",
"Эл. адрес": "[email protected]"
},{
"я бы": 3,
"Имя": "Арабель",
"фамилия": "Пестор",
"Эл. адрес": "[email protected]"
}]
Это простой файл JSON, содержащий три объекта.
Ключи объекта — идентификатор, имя, фамилия и адрес электронной почты — являются заголовками, а соответствующие им свойства составляют тело таблицы.
Создание табличного компонента
Создайте новый файл с именем Таблица.js в папке src и добавьте следующий код.
экспортдефолтфункцияСтол({theadData, tbodyData}) {
возвращаться (
<стол>
<голова>
<тр>
// строка заголовка
</tr>
</thead>
<тело>
// данные тела
</tbody>
</table>
);
}
Этот компонент принимает theadData и tBodyData в качестве реквизита. theadData содержит данные, которые вы будете отображать в строке заголовка. Приложение будет получать эти данные из файла JSON и передавать их компоненту таблицы.
Создайте функцию в App.js вызывается getHeadings() и добавляется следующее.
константа получитьзаголовки = () => {
возвращатьсяОбъект.keys (данные[0]);
}
Поскольку ключи для каждого объекта в файле JSON похожи, вы можете просто использовать ключи из первого объекта.
Не забудьте импортировать data.json в App.js.
импорт данные из "./данные.json"
Когда вы визуализируете компонент таблицы, передайте заголовок и данные JSON в качестве реквизита.
<Таблица theadData={getHeadings()} tbodyData={data}/>
Создание строки заголовка
На этом шаге вы создадите компонент для отображения элемента в строке заголовка. Этот компонент будет перебирать заголовки с помощью метода map().
В Table.js добавьте код для перебора заголовков внутри тега thead.
<тр>
{theadData.map (заголовок => {
возвращаться <ключ = {заголовок}>{заголовок}</th>
})}
</tr>
Далее вы заполните тело таблицы.
Создание строк тела
Тело таблицы отображает данные строки. Поскольку Table.js получает данные в виде массива объектов, вам нужно сначала выполнить итерацию по ним, чтобы получить каждый объект, представляющий строку.
Итак, в Table.js перебираем свойство tBodyData следующим образом:
<тело>
{tbodyData.map((строка, индекс) => {
возвращаться <tr ключ = {индекс}>
// Данные ряда
</tr>;
})}
</tbody>
Каждый объект строки будет похож на пример объекта ниже.
константа строка = {
"я бы": 1,
"Имя": "Этельред",
"фамилия": "Медленно",
"Эл. адрес": "[email protected]"
}
Чтобы отобразить каждый из этих элементов, вам нужно будет перебрать ключи объекта. На каждой итерации вы будете получать свойство, соответствующее этому ключу в объекте строки. Поскольку эти ключи совпадают с заголовками, используйте значения из реквизита theadData.
Измените тег tr, чтобы отобразить данные строки, как показано ниже.
<tr ключ = {индекс}>
// theadData содержит ключи
{theadData.map((ключ, индекс) => {
возвращаться <тд ключ = {строка [ключ]}>{строка [ключ]}</td>
})}
</tr>;
Собрав все вместе, компонент Table должен выглядеть так:
экспортдефолтфункцияСтол({theadData, tbodyData}) {
возвращаться (
<стол>
<голова>
<тр>
{theadData.map (заголовок => {
возвращаться <ключ = {заголовок}>{заголовок}</th>
})}
</tr>
</thead>
<тело>
{tbodyData.map((строка, индекс) => {
возвращаться <tr ключ = {индекс}>
{theadData.map((ключ, индекс) => {
возвращаться <тд ключ = {строка [ключ]}>{строка [ключ]}</td>
})}
</tr>;
})}
</tbody>
</table>
);
}
в
элемент, компонент перебирает массив данных и возвращает строку таблицы для каждого объекта.Использование табличного компонента
Импортируйте таблицу в App.js и отобразите ее, как показано ниже:
импорт Стол из './Стол';
импорт данные из "./данные.json"
функцияПриложение() {
константа получитьзаголовки = () => {
возвращатьсяОбъект.keys (данные[0]);
}
возвращаться (
<div имя_класса ="контейнер">
<Таблица theadData={getHeadings()} tbodyData={data}/>
</div>
);
}
экспортдефолт Приложение;
Компонент таблицы принимает theadData и tbodyData в качестве реквизита. theadData содержит заголовки, сгенерированные из ключей первого элемента данных JSON, а tbodyData содержит весь файл JSON.
Стилизация с помощью модулей CSS
В этом руководстве вы создали компонент таблицы React из файла JSON. Вы также узнали, как можно манипулировать данными JSON в соответствии со своими потребностями. Вы можете улучшить внешний вид своей таблицы, добавив в нее CSS. Чтобы создать стили CSS с локальной областью действия, рассмотрите возможность использования модулей CSS. Он прост в использовании и с ним легко начать работу, если вы используете приложение create-react-app.