feat: Переместить логику подгрузки имен ASN из кэша/внешних API в useEffect после вычисления paginatedItems для улучшения производительности и корректности отображения
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m54s

This commit is contained in:
2025-08-27 19:23:19 +07:00
parent 10903400e7
commit ac0cbc8c31
+15 -13
View File
@@ -76,19 +76,7 @@ function ASNsNewManager() {
})();
}, []);
// Подгружаем имена ASN из кэша/внешних API
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)]);
// Подгружаем имена ASN из кэша/внешних API (эффект будет размещен ниже после определения paginatedItems)
const renderCommunityBadge = (value) => {
const v = String(value ?? '').trim();
@@ -382,6 +370,20 @@ function ASNsNewManager() {
const totalPages = Math.max(1, Math.ceil(filtered.length / 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
const allCommunities = Array.from(new Set(items.map(i => String(i.community))));