Как сделать фильтрация элементов по категориям?

Для реализации фильтрации элементов по категориям в приложении Vue.js вы можете использовать вычисляемые свойства и методы. Вот подробное объяснение, как это сделать.

Шаг 1: Создайте компонент Item
Сначала создайте компонент Item, который будет представлять отдельный элемент. У этого компонента должны быть свойства, такие как "name" и "category", которые будут указывать на имя элемента и его категорию.

<template>
  <div>
    <h3>{{ name }}</h3>
    <p>Category: {{ category }}</p>
  </div>
</template>

<script>
export default {
  props: {
    name: String,
    category: String
  }
};
</script>

Шаг 2: Создайте главный компонент App
Затем создайте главный компонент App, который будет содержать список элементов и фильтры для категорий.

<template>
  <div>
    <h2>Item List</h2>

    <select v-model="selectedCategory">
      <option value="">All Categories</option>
      <option v-for="category in categories" :key="category">{{ category }}</option>
    </select>

    <div>
      <Item v-for="item in filteredItems" :key="item.name" :name="item.name" :category="item.category" />
    </div>
  </div>
</template>

<script>
import Item from './Item.vue';

export default {
  components: {
    Item
  },
  data() {
    return {
      items: [
        { name: 'Item 1', category: 'Category 1' },
        { name: 'Item 2', category: 'Category 2' },
        { name: 'Item 3', category: 'Category 1' },
        { name: 'Item 4', category: 'Category 3' }
      ],
      selectedCategory: ''
    };
  },
  computed: {
    categories() {
      const categories = new Set();
      this.items.forEach(item => {
        categories.add(item.category);
      });
      return Array.from(categories);
    },
    filteredItems() {
      if (this.selectedCategory) {
        return this.items.filter(item => item.category === this.selectedCategory);
      } else {
        return this.items;
      }
    }
  }
};
</script>

Шаг 3: Разместите главный компонент в файле index.html
Наконец, разместите главный компонент в файле index.html, чтобы отобразить его в браузере.

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Vue.js Filter</title>
</head>

<body>
  <div id="app">
    <App />
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  <script src="./App.vue"></script>

  <script>
    new Vue({
      el: '#app',
      render: h => h(App)
    });
  </script>
</body>

</html>

Теперь, когда вы открываете файл index.html в браузере, вы видите список элементов и выпадающий список с категориями. При выборе категории будет происходить фильтрация элементов в реальном времени.