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 cols = useMemo(() => columns.map((c) =>
|
||||
<NeighborColumn
|
||||
key={c}
|
||||
neighbor={neighbor}
|
||||
column={c} />
|
||||
), [neighbor, columns]);
|
||||
return (
|
||||
<tr>{cols}</tr>
|
||||
);
|
||||
return useMemo(() => {
|
||||
const cols = columns.map((c) =>
|
||||
<NeighborColumn
|
||||
key={c}
|
||||
neighbor={neighbor}
|
||||
column={c} />);
|
||||
return (
|
||||
<tr>{cols}</tr>
|
||||
);
|
||||
}, [neighbor, columns]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,5 +1,7 @@
|
||||
|
||||
import { useCallback }
|
||||
import { useCallback
|
||||
, useMemo
|
||||
}
|
||||
from 'react';
|
||||
|
||||
|
||||
@ -91,18 +93,35 @@ const RouteColumn = ({onClick, column, route}) => {
|
||||
"ASPath": ColAsPath,
|
||||
};
|
||||
|
||||
const handleClick = useCallback(() => onClick(route), [route, onClick]);
|
||||
|
||||
let Widget = widgets[column] || ColDefault;
|
||||
return (
|
||||
<Widget
|
||||
column={column}
|
||||
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 setRouteDetails = useSetRouteDetails();
|
||||
@ -119,15 +138,11 @@ const RoutesTable = ({results}) => {
|
||||
}
|
||||
|
||||
const rows = routes.map((r, i) => (
|
||||
<tr key={i}>
|
||||
{columnsOrder.map((col) => (
|
||||
<RouteColumn
|
||||
key={col}
|
||||
onClick={showAttributesModal}
|
||||
column={col}
|
||||
route={r} />
|
||||
))}
|
||||
</tr>
|
||||
<RoutesRow
|
||||
key={i}
|
||||
columns={columnsOrder}
|
||||
onClick={showAttributesModal}
|
||||
route={r} />
|
||||
));
|
||||
|
||||
return (
|
||||
|
Loading…
x
Reference in New Issue
Block a user