Проблема с текущим кодом заключается в том, что переменная placeholders является общей для всех элементов и всегда имеет одно значение. Чтобы исправить это, необходимо использовать объект Map, в котором ключом будет являться уникальный идентификатор элемента, а значением - флаг, показывающий, является ли элемент видимым или нет. Перепишем код, чтобы использовать Map: ```javascript <template v-for="(item, index) in section.items"> <li v-node-intersect="() => handleIntersection(index)" class="feed-list-item" :key="index" > <feed-item v-if="!isPlaceholder(index)" :item="item" /> <content-placeholder v-else /> </li> </template> <script> import { ref, onMounted } from 'vue' const intersectionObserver = ref(null) const placeholders = ref(new Map()) onMounted(() => { intersectionObserver.value = new IntersectionObserver(handleIntersection) }) function handleIntersection(index) { return (entries) => { const entry = entries[0] if (entry.isIntersecting) { placeholders.value.delete(index) } else { if (!placeholders.value.has(index)) { placeholders.value.set(index, true) } } } } function isPlaceholder(index) { return placeholders.value.has(index) } </script> ``` Теперь переменная placeholders - это объект Map, в котором находятся уникальные идентификаторы элементов и их состояния видимости. Когда элемент становится видимым, он удаляется из Map, а когда он становится невидимым, он добавляется в Map. Теперь каждый элемент будет иметь уникальное значение идентификатора, которое будет использоваться для определения показа или замены на Placeholder.