The Difference between COMPUTED and WATCHERS in Vue.js

Understanding when to use watchers instead of computed and vice versa

Luca Spezzano
Nov 26, 2019 · 2 min read
Photo by Tim Gouw on Unsplash

After writing my first article about The Difference Between Computed and Methods in Vue.js, I noticed that many people were confused about another difference, the one between computed properties and watchers.

I think the reason why this happens is that they can both run when a value changes.

I had the same doubt, so let’s see when to use watchers instead of computed and vice versa.

Computed properties

Computed properties are very handy for manipulating data that already exists. They are cached based; this means that the function will run only once until the values don’t change again (also if it’s called many times in the same template).
You can think to use them anytime you need to sort through a large group of data, and you don’t want to rerun those calculations every time if you don’t need it.

Let’s look at a basic example.

JS

HTML

OUTPUT

Watchers

Watchers allow you to listen to the data object and run whenever a specific property changes.

Moreover, as we can also read on the official guide

This is most useful when you want to perform asynchronous or expensive operations in response to changing data

Let’s look at a basic example.

JS

HTML

OUTPUT

I hope these examples have clarified your doubts.
Lastly, let’s see when to use them to meet our needs better.

When to use Computed or Watchers?

Use watchers when

  • You want to listen when a data property changes
  • You want to watch a data property until it reaches some specific value and then do something

Ps. you can’t watch multiple properties at the same time

Use computed properties when:

  • You want to compose new data from existing data sources
  • You need to sort or manipulate a large group of data
  • You need to use values directly in the template

If you’re curious to know which famous companies already use this JavaScript framework, you can read this article.

NotOnlyCSS

This publication includes original articles and tips about frontend technologies.

Luca Spezzano

Written by

Frontend developer focused on CSS architecture of scalable and maintainable large scale projects and the development of amazing user interfaces.

NotOnlyCSS

This publication includes original articles and tips about frontend technologies.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade