Implement a computed property search filter in Vue JS

Posted by


In Vue JS, you can easily create a search filter using a computed property to dynamically filter a list of items based on user input. In this tutorial, we will walk through the process of creating a search filter using a computed property in Vue JS.

Step 1: Set up a Vue JS project
First, you need to set up a Vue JS project. You can do this by using Vue CLI to create a new project or by including Vue JS in your HTML file. For this tutorial, we will assume you have a basic Vue JS project set up with a list of items that you want to filter.

Step 2: Create a data property for the search query
Next, you need to create a data property in your Vue component to store the user’s search query. This will be used to filter the list of items. Add the following code to your Vue component:

data() {
  return {
    searchQuery: '',
    items: [
      { name: 'Item 1' },
      { name: 'Item 2' },
      { name: 'Item 3' },
      { name: 'Item 4' }
    ]
  }
}

In this code snippet, we have initialized a data property called searchQuery to store the user’s search query and an array of items that we want to filter.

Step 3: Create a computed property for the filtered items
Next, you need to create a computed property to filter the list of items based on the user’s search query. Add the following code to your Vue component:

computed: {
  filteredItems() {
    return this.items.filter(item => {
      return item.name.toLowerCase().includes(this.searchQuery.toLowerCase());
    });
  }
}

In this code snippet, we have created a computed property called filteredItems that filters the items array based on the user’s search query. We are using the filter method to return only the items whose names include the search query, regardless of case.

Step 4: Display the filtered items in the template
Finally, you need to display the filtered items in the template. Add the following code to your Vue component’s template:

<input type="text" v-model="searchQuery" placeholder="Search">
<ul>
  <li v-for="item in filteredItems" :key="item.name">{{ item.name }}</li>
</ul>

In this code snippet, we have added an input field for the user to type their search query. We are using the v-model directive to bind the input field to the searchQuery data property. We then use a v-for directive to loop through the filteredItems array and display each item in a list.

That’s it! You have now created a search filter using a computed property in Vue JS. Users can type in the input field to filter the list of items dynamically. This is a simple and powerful way to add search functionality to your Vue JS applications.

0 0 votes
Article Rating
4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@davidduron3590
1 month ago

Excellent content, I’m showing this to my students!

@olivebishop3794
1 month ago

how can i contact you?

@franAnime
1 month ago

nice tutorial