我希望我的用户能够拖动材料表上的列并保持该状态持久。我可以随时获得我的专栏的状态和他们的订单。我确实救了他们。但是,当我尝试使用已保存的列顺序进行渲染时,它似乎并没有更新我的材料表。
我正在使用来自 material-table.com 的 react Material-Table
这是我想要做的代码:
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}
/>
}
是否可以这样做?材料是否设计为每次只有相同的列顺序?他们允许拖动事件很奇怪,但如果是这样的话?