Работа с таблицами в React: часть вторая
2023-06-30 0 ∞
Во второй части руководства мы продолжим изучение тонкостей работы с табличными данными в React. Мы используем библиотеку React Bootstrap Table для разработки сложных таблиц с профессиональным дизайном. В этой статье мы рассмотрим продвинутые настройки, разбиение таблицы на страницы и редактирование ячеек.
Краткое содержание статьи
Это вторая часть руководства по работе с библиотекой React Bootstrap Table2. В первой части мы создали простое React- приложение и добавили в него показанную ниже таблицу:
Кроме того, мы наполнили таблицу тестовыми данными, поработали с настройкой столбцов, выделением ячеек и их оформлением. В этой статье мы затронем вопросы дополнительных настроек, рассмотрим создание расширяющихся строк и редактируемых ячеек.
Расширяющиеся строки
Одна из самых впечатляющих опций библиотеки React Bootstrap Table2 – расширяющиеся строки. При визуализации табличных данных часто возникает необходимость в дополнительных строках для полного отображения информации. Но если данные во всех строках сразу будут отображаться в полном виде, это может сильно затруднить просмотр информации.
Обычный способ решения этой проблемы – показ всплывающих подсказок, но для всплывающих подсказок требуется навести курсор мыши на целевую область, и вы сможете видеть только одну всплывающую подсказку одновременно. Расширение строк позволяет отображать дополнительные данные для каждой строки в виде выдвижного ящика, который остается развернутым столько, сколько вы хотите, и вы можете свернуть его обратно, когда закончите. Вы можете развернуть столько строк одновременно, сколько захотите.
Вот как это делается с помощью библиотеки React Bootstrap Table2. Наши данные выглядят следующим образом:
const product = [ {id: 1, name: 'Headphone Fusion', value: '100'}, {id: 2, name: 'Headphone Beats', value: '80'}, {id: 3, name: 'Headphone Modus', value: '70'}, {id: 4, name: 'Headphone Jam', value: '100'} ];
Работа с таблицами в React: часть первая
Для определения расширения строки по клику мышкой мы воспользуемся свойством expandRow:
const expandRow = { renderer: (row, rowIndex) => ( <div> <p>{ `This Expand row is belong to rowKey ${row.id}` }</p> <p>You can render anything here, also you can add additional data on every row object</p> <p>expandRow.renderer callback will pass the origin row object to you</p> </div> ) };
Добавим свойство expandRow в нашу таблицу:
<BootstrapTable // striped hover keyField='id' keyField='id' data={ product } columns={ columns } // apply the expandRow property here expandRow={ expandRow } />
Вот так таблица будет выглядеть после клика по строке:
Разбиение на страницы
Пока что мы выводили на экран таблицу, в которой всего четыре строки. В реальности таблицы могут включать в себя огромный объем информации, который обычно не помещается на экране. Для решения этой проблемы библиотека React Bootstrap Table2 предусматривает множество вариантов постраничного вывода таблицы.
Добавим в нашу таблицу несколько записей, как показано ниже:
const product = [ {id: 1, name: 'Headphone Fusion', value: '100'}, {id: 2, name: 'Headphone Beats', value: '80'}, {id: 3, name: 'Headphone Modus', value: '70'}, {id: 4, name: 'Headphone Jam', value: '100'}, {id: 5, name: 'Headphone Auto', value: '50'}, {id: 6, name: 'Headphone Byte', value: '70'}, {id: 7, name: 'Headphone Duo', value: '150'}, {id: 8, name: 'Headphone Modular', value: '80'}, {id: 9, name: 'Headphone Pivot', value: '150'}, {id: 10, name: 'Headphone Optimizer', value: '70'}, {id: 11, name: 'Headphone Rave', value: '50'}, {id: 12, name: 'Headphone Mach', value: '40'} ];
Теперь таблица готова к постраничному выводу. Сначала установим компонент react-bootstrap-table2-paginator с помощью менеджера пакетов npm:
npm install react-bootstrap-table2-paginator --save
Создание собственной библиотеки валидации для React: основы (часть 1)
После этого откроем файл App.js и пропишем импорт paginationFactory:
import paginationFactory from 'react-bootstrap-table2-paginator';
Настроим разбиение на страницы с помощью приведенных ниже параметров:
const options = { page: 1, sizePerPage: 5, nextPageText: '>', prePageText: '<', showTotal: true };
Теперь применим созданное свойство к нашей таблице, как показано ниже:
<BootstrapTable // striped hover keyField='id' keyField='id' data={ person } columns={ columns } expandRow={ expandRow } //apply the pagination function here pagination={ paginationFactory(options) } />
После внесения этих изменений таблица будет выводиться на трех страницах. На каждой странице будет отображаться по пять записей:
Редактирование ячеек
Один из типичных вариантов управления данными – локальное редактирование ячеек. Редактирование обычно активируется одиночным или двойным кликом. Для реализации такой функции потребуется установить компонент react-bootstrap-table2-editor:
npm install react-bootstrap-table2-editor –save
Внесите импорт компонента в файл App.js:
//App.js import cellEditFactory from 'react-bootstrap-table2-editor';
Редактирование ячеек таблицы активируют следующим образом:
<BootstrapTable hover keyField='id' data={ product } columns={ columns } expandRow={ expandRow } pagination={ paginationFactory(options) } cellEdit={ cellEditFactory({ mode: 'click' }) } />
У вас также есть возможность запретить редактирование определенных ячеек и задать хуки для функций. Например, приведенный ниже код запрещает редактирование ячеек третьей строки:
<BootstrapTable hover keyField='id' data={ product } columns={ columns } expandRow={ expandRow } pagination={ paginationFactory(options) } cellEdit={ cellEditFactory({ mode: 'click', blurToSave: true, nonEditableRows: () => [0, 3] }) } }) } />
Создание собственной библиотеки валидации на React: дополнительные функции (часть 2)
Экспорт данных
Иногда изучения данных в браузере недостаточно – возникает необходимость экспорта информации для последующего анализа с помощью специализированного программного обеспечения. Достаточно импортировать модуль exportCSV – и ваша таблица получит функцию сохранения данных в CSV-файле с определенным (по желанию) названием. Экспорт данных выполняется после нажатия кнопки. Для реализации подобной функции следует установить компонент react-bootstrap-table2-toolkit:
npm install react-bootstrap-table2-toolkit --save
Функция экспорта данных доступна через свойство exportCSV в модуле ToolkitProvider. Для активации экспорта следует обернуть BootstrapTable в ToolkitProvider:
import ToolkitProvider, { CSVExport } from 'react-bootstrap-table2-toolkit'; const { ExportCSVButton } = CSVExport; // the rest of the code here <ToolkitProvider keyField="id" data={ product } columns={ columns } exportCSV > { props => ( <div> <ExportCSVButton { ...props.csvProps }>Export CSV!!</ExportCSVButton> <hr /> <BootstrapTable { ...props.baseProps } /> </div> ) } </ToolkitProvider
Поиск в таблице
Это свойство работает так же, как и функция экспорта. Прежде всего, импортируйте свойство Search, активируйте его в ToolKitProvider, а затем оберните SearchBar в ToolkitProvider:
import ToolkitProvider, { CSVExport} from 'react-bootstrap-table2-toolkit'; import { Search } from 'react-bootstrap-table2-toolkit'; const { ExportCSVButton } = CSVExport; const { SearchBar } = Search; class App extends Component { render() { return ( <div className="App"> <p className="Table-header">REXO</p> <ToolkitProvider keyField="id" data={ product } columns={ columns } exportCSV search > { props => ( <div> <ExportCSVButton { ...props.csvProps }>Export CSV!!</ExportCSVButton> <h3>Search anything below:</h3> <SearchBar { ...props.searchProps } /> <hr /> <hr /> <BootstrapTable pagination={paginationFactory()} {...props.baseProps} /> </div> ) } </ToolkitProvider>
Подведем итоги
Мы рассмотрели множество опций библиотеки React Bootstrap Table2, однако возможностей у нее намного больше. Она позволяет настраивать практически любые параметры таблиц. Для получения дополнительных сведений по работе с этим пакетом обратитесь к официальной документации.
Вот некоторые из основных возможностей библиотеки React Bootstrap Table2:
- полная кастомизация строк и столбцов;
- сортировка данных;
- поиск в таблице;
- выбор строк;
- фильтры для данных в столбцах;
- редактирование ячеек;
- постраничный вывод записей;
- расширяющиеся ячейки;
- наложение;
- импорт данных из удаленных таблиц.
Заключение
React Bootstrap Table2 – мощная библиотека. Она предоставляет удобный интерфейс для работы с табличными данными – вывода, поиска и управления. Работать с API этой библиотеки очень просто: основные функции можно активировать указанием атрибутов. При необходимости функциональность расширяется подключением дополнительных атрибутов, которые также могут быть динамическими функциями. Настроек по умолчанию будет достаточно для решения большинства задач. Кроме того, в официальной документации есть множество примеров по кастомизации и работе с продвинутыми настройками библиотеки.
Источник: www.internet-technologies.ru