@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
В приведенном коде:
Таким образом, данный компонент реализует сортировку столбца при клике на заголовок столбца, что позволяет пользователю управлять отображенными данными в таблице.