Я хочу, чтобы мои пользователи могли перетаскивать столбцы в таблице материалов и сохранять это состояние постоянным. Я могу получить состояния своих столбцов и их заказов в любое время. Я спасаю их. Однако, когда я пытаюсь выполнить рендеринг с сохраненным порядком моих столбцов, это не обновляет мою таблицу материалов.
Я использую реагирующую таблицу материалов с material-table.com
Вот код, который я пытаюсь сделать:
const tableHeaders = [];
tableHeaders.push({ title: 'a', field: 'a' });
tableHeaders.push({ title: 'b', field: 'b' });
tableHeaders.push({ title: 'c', field: 'c' });
const Table = (props) => {
const [state, setState] = useState({
headers: tableHeaders,
data: data // some data
});
const handleColumnDragged = (start, end) => {
// process the order of columns
// create as an array i.e. order = [2, 1, 0]
updateOrder(order);
// save to database
}
const updateHeaderOrder = (order) => {
let newHeaders = [];
order.forEach( i => {
newHeaders.push(tableHeaders[i]);
});
setState({ ...state, headers: newHeaders });
}
useEffect(() => {
resource.fetchHeaderOrder( order => {
updateHeaderOrder(order);
});
}, [resource]);
return (
<MaterialTable
columns={state.headers}
data={state.data}
onColumnDragged={handleColumnDragged}
/>
}
Возможно ли это сделать или нет? Материал рассчитан на одинаковый порядок столбцов каждый раз? Странно, что они позволяют перетаскивать события, если это так?