Я пытаюсь создать DetailsList с сортируемыми столбцами (аналогично примеру в документации здесь: https://uifabric.azurewebsites.net/#/controls/web/detailslist), но вместо компонента класса я хочу использовать функциональные компоненты и хуки.
Проблема в том, что при выполнении функции onColumnClick массив «items» все еще пуст.
Это в основном настройка моего компонента:
const MyList= () => {
const [items, setItems] = useState([]);
const [columns, setColumns] = useState([]);
useEffect(() => {
const newItems = someFetchFunction()
setItems(newItems);
const newColumns= [
{
key: "column1",
name: "Name",
fieldName: "name",
onColumnClick: handleColumnClick,
},
{
key: "column2",
name: "Age",
fieldName: "age",
onColumnClick: handleColumnClick,
},
];
setColumns(newColumns);
}, []);
const handleColumnClick = (ev, column) => {
console.log(items); // This returns [] instead of a populated array.
};
return <DetailsList items={items} columns={columns} />;
};
Проблема в том, что в handleColumnClick
items
возвращает пустой массив. Это очевидная проблема, когда вы хотите отсортировать элементы по определенному столбцу.