improved table memoization and performance
This commit is contained in:
parent
e21d9b238e
commit
c484ff2a0b
@ -267,15 +267,16 @@ const NeighborColumn = ({neighbor, column}) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const NeighborRow = ({neighbor, columns}) => {
|
const NeighborRow = ({neighbor, columns}) => {
|
||||||
const cols = useMemo(() => columns.map((c) =>
|
return useMemo(() => {
|
||||||
<NeighborColumn
|
const cols = columns.map((c) =>
|
||||||
key={c}
|
<NeighborColumn
|
||||||
neighbor={neighbor}
|
key={c}
|
||||||
column={c} />
|
neighbor={neighbor}
|
||||||
), [neighbor, columns]);
|
column={c} />);
|
||||||
return (
|
return (
|
||||||
<tr>{cols}</tr>
|
<tr>{cols}</tr>
|
||||||
);
|
);
|
||||||
|
}, [neighbor, columns]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
|
|
||||||
import { useCallback }
|
import { useCallback
|
||||||
|
, useMemo
|
||||||
|
}
|
||||||
from 'react';
|
from 'react';
|
||||||
|
|
||||||
|
|
||||||
@ -91,18 +93,35 @@ const RouteColumn = ({onClick, column, route}) => {
|
|||||||
"ASPath": ColAsPath,
|
"ASPath": ColAsPath,
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleClick = useCallback(() => onClick(route), [route, onClick]);
|
|
||||||
|
|
||||||
let Widget = widgets[column] || ColDefault;
|
let Widget = widgets[column] || ColDefault;
|
||||||
return (
|
return (
|
||||||
<Widget
|
<Widget
|
||||||
column={column}
|
column={column}
|
||||||
route={route}
|
route={route}
|
||||||
onClick={handleClick} />
|
onClick={onClick} />
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RoutesRow renders a memoized row
|
||||||
|
*/
|
||||||
|
const RoutesRow = ({columns, route, onClick}) => {
|
||||||
|
return useMemo(() => {
|
||||||
|
const callback = () => onClick(route);
|
||||||
|
const cols = columns.map((col) => (
|
||||||
|
<RouteColumn
|
||||||
|
key={col}
|
||||||
|
onClick={callback}
|
||||||
|
column={col}
|
||||||
|
route={route} />
|
||||||
|
));
|
||||||
|
return (
|
||||||
|
<tr>{cols}</tr>
|
||||||
|
);
|
||||||
|
}, [columns, route, onClick]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const RoutesTable = ({results}) => {
|
const RoutesTable = ({results}) => {
|
||||||
const setRouteDetails = useSetRouteDetails();
|
const setRouteDetails = useSetRouteDetails();
|
||||||
@ -119,15 +138,11 @@ const RoutesTable = ({results}) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const rows = routes.map((r, i) => (
|
const rows = routes.map((r, i) => (
|
||||||
<tr key={i}>
|
<RoutesRow
|
||||||
{columnsOrder.map((col) => (
|
key={i}
|
||||||
<RouteColumn
|
columns={columnsOrder}
|
||||||
key={col}
|
onClick={showAttributesModal}
|
||||||
onClick={showAttributesModal}
|
route={r} />
|
||||||
column={col}
|
|
||||||
route={r} />
|
|
||||||
))}
|
|
||||||
</tr>
|
|
||||||
));
|
));
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
Loading…
x
Reference in New Issue
Block a user