Для разделения массива на страницы с использованием пагинации в Vue.js, вы можете следовать следующим шагам: 1. Создайте компонент Pagination.vue: ```javascript <template> <div> <ul> <li v-for="pageNumber in totalPages" :key="pageNumber" :class="{ active: currentPage === pageNumber }"> <a @click="changePage(pageNumber)">{{ pageNumber }}</a> </li> </ul> </div> </template> <script> export default { props: { totalItems: { type: Number, required: true }, itemsPerPage: { type: Number, default: 10 } }, computed: { totalPages() { return Math.ceil(this.totalItems / this.itemsPerPage); } }, data() { return { currentPage: 1 } }, methods: { changePage(pageNumber) { this.currentPage = pageNumber; this.$emit('page-changed', pageNumber); } } } </script> ``` 2. В компоненте, где вы хотите использовать пагинацию, импортируйте и используйте компонент Pagination.vue: ```javascript <template> <div> <ul> <li v-for="item in displayedItems" :key="item.id">{{ item.name }}</li> </ul> <pagination :totalItems="items.length" :itemsPerPage="10" @page-changed="changePage"></pagination> </div> </template> <script> import Pagination from './Pagination.vue'; export default { components: { Pagination }, data() { return { items: [ { id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }, { id: 3, name: 'Item 3' }, // Остальные объекты в массиве ], currentPageItems: [] } }, computed: { displayedItems() { const startIndex = (this.currentPage - 1) * 10; const endIndex = startIndex + 10; this.currentPageItems = this.items.slice(startIndex, endIndex); return this.currentPageItems; } }, methods: { changePage(pageNumber) { this.currentPage = pageNumber; } } } </script> ``` В приведенном выше примере, компонент Pagination.vue создает список страниц с помощью пропсов totalItems и itemsPerPage. При нажатии на страницу вызывается метод changePage, который устанавливает currentPage и генерирует событие page-changed, так что вы можете обновить текущую страницу в основном компоненте. В основном компоненте, вы можете использовать displayedItems в качестве вычисляемого свойства для отображения элементов текущей страницы, основываясь на currentPage и itemsPerPage. Когда изменяется страница, метод changePage обновляет currentPage и displayedItems. Убедитесь, что вы настроили items со своим массивом объектов и itemsPerPage на ваше предпочтение.
```javascript const posts = [ { title: 'Привет сережа', data: '10 мая 2023', age: '11+', type: 'Мастер-класс', card: 'Пушкинская карта' , id:1 }, { title: 'Привет Витя', data: '11 мая 2023', age: '12+', type: 'Мастер-класс', card: 'Пушкинская карта' , id:2 }, { title: 'Привет Маша', data: '12 мая 2023', age: '13+', type: 'Мастер-класс', card: 'Пушкинская карта' , id: 3 }, { title: 'Не только джаз на пруду', data: '13 мая 2023', age: '14+', type: 'Мастер-класс', card: 'Пушкинская карта' , id: 4 }, { title: 'Не только джаз на пруду', data: '15 мая 2023', age: '15+', type: 'ЦМастер-класс', card: 'Пушкинская карта' , id: 5 }, { title: 'Не только джаз на пруду', data: '29 мая 2023', age: '21+', type: 'ЖМастер-класс', card: 'Пушкинская карта Да' , id: 6 }, { title: 'Не только джаз на пруду', data: '10 мая 2023', age: '40+', type: 'КМастер-класс', card: 'Пушкинская карта Нет' , id: 7 }, { title: 'Не только джаз на пруду', data: '10 мая 2023', age: '10+', type: 'Мастер-класс', card: 'Пушкинская карта Да' , id: 8 }, { title: 'Не только джаз на пруду', data: '10 мая 2023', age: '16+', type: 'Мастер-класс', card: 'Пушкинская карта Нет' , id: 9 }, { title: 'Не только джаз на пруду', data: '10 мая 2023', age: '18+', type: 'Мастер-класс', card: 'Пушкинская карта' , id: 10 }, { title: 'А Не только джаз на пруду', data: '10 мая 2023', age: '17+', type: 'ВМастер-класс', card: 'Пушкинская карта' , id: 11 }, { title: 'А Не только джаз на пруду', data: '10 мая 2023', age: '17+', type: 'АМастер-класс', card: 'Пушкинская карта' , id: 12 }, ]; ```