react开源库常用操作,我感觉这种写法挺优雅的,主要是之前经常被吐槽代码不够优雅,每天进步一点点,233
let {a,b,c}=fn(){
//一顿操作
return {a,b,c}
}
//原例子如下
const { layoutCssVars, totalColumnWidth, totalFrozenColumnWidth, columnMetrics } = useMemo((): {
layoutCssVars: Readonly<Record<string, string>>;
totalColumnWidth: number;
totalFrozenColumnWidth: number;
columnMetrics: ReadonlyMap<CalculatedColumn<R, SR>, ColumnMetric>;
} => {
const columnMetrics = new Map<CalculatedColumn<R, SR>, ColumnMetric>();
let left = 0;
let totalColumnWidth = 0;
let totalFrozenColumnWidth = 0;
let templateColumns = '';
let allocatedWidth = 0;
let unassignedColumnsCount = 0;
for (const column of columns) {
let width = getSpecifiedWidth(column, columnWidths, viewportWidth);
if (width === undefined) {
unassignedColumnsCount++;
} else {
width = clampColumnWidth(width, column, minColumnWidth);
allocatedWidth += width;
columnMetrics.set(column, { width, left: 0 });
}
}
const unallocatedWidth = viewportWidth - allocatedWidth;
const unallocatedColumnWidth = unallocatedWidth / unassignedColumnsCount;
for (const column of columns) {
let width: number;
if (columnMetrics.has(column)) {
const columnMetric = columnMetrics.get(column)!;
columnMetric.left = left;
({ width } = columnMetric);
} else {
width = clampColumnWidth(unallocatedColumnWidth, column, minColumnWidth);
columnMetrics.set(column, { width, left });
}
totalColumnWidth += width;
left += width;
templateColumns += `${width}px `;
}
if (lastFrozenColumnIndex !== -1) {
const columnMetric = columnMetrics.get(columns[lastFrozenColumnIndex])!;
totalFrozenColumnWidth = columnMetric.left + columnMetric.width;
}