feat: Переместить логику подгрузки имен ASN из кэша/внешних API в useEffect после вычисления paginatedItems для улучшения производительности и корректности отображения
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m54s
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m54s
This commit is contained in:
@@ -76,19 +76,7 @@ function ASNsNewManager() {
|
|||||||
})();
|
})();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
// Подгружаем имена ASN из кэша/внешних API
|
// Подгружаем имена ASN из кэша/внешних API (эффект будет размещен ниже после определения paginatedItems)
|
||||||
useEffect(() => {
|
|
||||||
const visible = paginatedItems.map(i => i.asn);
|
|
||||||
visible.forEach(async (asn) => {
|
|
||||||
const cached = getAsnNameSync(asn);
|
|
||||||
if (cached !== null && typeof cached !== 'undefined') {
|
|
||||||
setAsnNameMap(prev => ({ ...prev, [asn]: cached }));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const name = await getAsnName(asn);
|
|
||||||
if (name !== null) setAsnNameMap(prev => ({ ...prev, [asn]: name }));
|
|
||||||
});
|
|
||||||
}, [JSON.stringify(paginatedItems)]);
|
|
||||||
|
|
||||||
const renderCommunityBadge = (value) => {
|
const renderCommunityBadge = (value) => {
|
||||||
const v = String(value ?? '').trim();
|
const v = String(value ?? '').trim();
|
||||||
@@ -382,6 +370,20 @@ function ASNsNewManager() {
|
|||||||
const totalPages = Math.max(1, Math.ceil(filtered.length / pageSize));
|
const totalPages = Math.max(1, Math.ceil(filtered.length / pageSize));
|
||||||
const paginatedItems = filtered.slice((currentPage - 1) * pageSize, (currentPage) * pageSize);
|
const paginatedItems = filtered.slice((currentPage - 1) * pageSize, (currentPage) * pageSize);
|
||||||
|
|
||||||
|
// Подгружаем имена ASN из кэша/внешних API (после вычисления paginatedItems)
|
||||||
|
useEffect(() => {
|
||||||
|
const visible = paginatedItems.map(i => i.asn);
|
||||||
|
visible.forEach(async (asn) => {
|
||||||
|
const cached = getAsnNameSync(asn);
|
||||||
|
if (cached !== null && typeof cached !== 'undefined') {
|
||||||
|
setAsnNameMap(prev => ({ ...prev, [asn]: cached }));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const name = await getAsnName(asn);
|
||||||
|
if (name !== null) setAsnNameMap(prev => ({ ...prev, [asn]: name }));
|
||||||
|
});
|
||||||
|
}, [JSON.stringify(paginatedItems)]);
|
||||||
|
|
||||||
// Для фильтра - список всех уникальных community
|
// Для фильтра - список всех уникальных community
|
||||||
const allCommunities = Array.from(new Set(items.map(i => String(i.community))));
|
const allCommunities = Array.from(new Set(items.map(i => String(i.community))));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user