У меня задача сделать плейсхолдеры для товаров на время загрузки. Не могу найти правильный подход. Первое, что пришло в голову и что выдает гугл это отдельный блок на время загрузки, но в таком подходе происходит дерганье при рендеринге, что в моём случае дергает страницу и вызывает дальнейшую подгрузку. И это происходит во всех шаблонизаторах vue/angular/react. Поэтому в голову пришла мысль cделать предзаполнение массива с последующим его заполнением.
let products = [{id: 245}, {id: 233}, {id: 333}];
// ... функция подгружающия данные
// добавляем в массив пустые элементы, которые будут рендерится как плэйсхолдеры
products.push(...[{}, {}, {}]);
fetch('https://jsonplaceholder.typicode.com/posts/')
.then(res => res.json())
.then(newItems => {
// заменяем пустые на товары
let count = -1;
products = products.map(p => {
if (p.id) return p;
else {
count++;
return newItems[count] || {};
}
}).filter(p => p.id); // удаляем пустые
console.log(products);
});
Но получается у меня очень костыльно, количество захардкожено, если приходит больше элементов, то не добавляется итд итп. Поэтому вопросы:
n
пустых объектов в массив (без цикла)?Или может есть интересней подход?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Захватываю левую кнопку, присваиваю ей класс chosen, одновременно убирая его в правой кнопкеЗахватываю правую кнопку, присваиваю тот же класс,...
var num_first = documentgetElementById("one") // допустим что в "one" ввели 5