@roma
Для сортировки столбца через onclick в React.js можно использовать состояние компонента для хранения текущей сортировки и функцию для обновления этого состояния.
Вот пример простого компонента таблицы с функциональными компонентами:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
import React, { useState } from "react";
const Table = () => {
const [data, setData] = useState([
{ id: 1, name: "John", age: 25 },
{ id: 2, name: "Anna", age: 30 },
{ id: 3, name: "Peter", age: 20 }
]);
const [sortBy, setSortBy] = useState(null);
const handleSort = (key) => {
// Проверяем, сортируется ли столбец по возрастанию или убыванию
const isDescending = sortBy && sortBy.key === key && sortBy.isDescending;
// Копируем данные и меняем порядок сортировки
const sortedData = [...data].sort((a, b) => {
if (a[key] < b[key]) return isDescending ? 1 : -1;
if (a[key] > b[key]) return isDescending ? -1 : 1;
return 0;
});
// Обновляем состояние с отсортированными данными и ключом сортировки
setData(sortedData);
setSortBy({ key: key, isDescending: !isDescending });
};
return (
<table>
<thead>
<tr>
<th onClick={() => handleSort("id")}>ID</th>
<th onClick={() => handleSort("name")}>Name</th>
<th onClick={() => handleSort("age")}>Age</th>
</tr>
</thead>
<tbody>
{data.map((item) => (
<tr key={item.id}>
<td>{item.id}</td>
<td>{item.name}</td>
<td>{item.age}</td>
</tr>
))}
</tbody>
</table>
);
};
export default Table;
|
В этом примере есть состояние data, которое хранит данные таблицы, и состояние sortBy, которое хранит текущий ключ сортировки и порядок сортировки. Функция handleSort обновляет состояние data и sortBy в зависимости от выбранного столбца для сортировки.
При клике на заголовок столбца вызывается функция handleSort, которая сортирует данные в соответствии с выбранным столбцом и обновляет состояние компонента с отсортированными данными.
@roma
В приведенном коде:
Таким образом, данный компонент реализует сортировку столбца при клике на заголовок столбца, что позволяет пользователю управлять отображенными данными в таблице.