In Vue.js, methods and computed properties are essential tools for creating dynamic and reactive user interfaces. They allow developers to define logic that can be reused within the template and manage data more effectively. This chapter will explore methods and computed properties in detail, from basic usage to advanced techniques, with comprehensive examples and explanations.
Methods are functions defined within a Vue component that can be invoked in response to user events or other actions. They allow you to encapsulate logic that can be reused throughout your component.
Computed properties are reactive properties that are evaluated based on their dependencies. They are cached and only re-evaluated when their dependencies change, making them efficient for computed logic that relies on reactive data.
Methods are defined within the methods
option of a Vue instance.
methods: { sayHello: function() { ... } }
defines a method named sayHello
.@click="sayHello"
binds the sayHello
method to the button’s click event.Methods can be called directly from the template, usually in response to events.
v-model="name"
binds the input value to the name
data property.@click="greet"
binds the greet
method to the button’s click event.Methods can accept parameters, allowing for more dynamic behavior.
say: function(greeting, name) { ... }
defines a method that accepts two parameters.@click="say('Hello', 'Vue.js')"
calls the say
method with the arguments “Hello” and “Vue.js”.Computed properties are defined within the computed
option of a Vue instance.
{{ reversedMessage }}
computed: { reversedMessage: function() { ... } }
defines a computed property named reversedMessage
.{{ reversedMessage }}
binds the reversedMessage
computed property to the paragraph element.Computed properties are used in templates like regular data properties.
{{ fullName }}
fullName: function() { return this.firstName + ' ' + this.lastName; }
defines a computed property that combines firstName
and lastName
.{{ fullName }}
binds the fullName
computed property to the paragraph element.Computed properties automatically update when their dependencies change.
{{ fullName }}
fullName
computed property depends on firstName
and lastName
.fullName
output.firstName
and lastName
.
Computed: {{ computedMessage }}
Method: {{ methodMessage() }}
computedMessage
is a computed property.methodMessage
is a method.
{{ answer }}
watches the
question` property for changes._.debounce
from lodash is used to limit the rate at which getAnswer
is invoked.Computed properties are automatically cached based on their dependencies. This caching mechanism improves performance by avoiding unnecessary re-computation.
Counter: {{ counter }}
Computed: {{ computedCounter }}
computedCounter
is a computed property that doubles the value of counter
.counter
changes.Computed properties are lazily evaluated, meaning they are not computed until their value is needed for rendering or accessing in JavaScript.
{{ expensiveOperation }}
expensiveOperation
is a computed property that performs an expensive computation on dataForExpensiveOperation
.isVisible
is true and the value is needed for rendering.In this chapter, we explored methods and computed properties in Vue.js, fundamental for creating reactive and efficient applications. Methods are used for executing actions and responding to events, while computed properties are ideal for deriving and caching values based on reactive data. Understanding when to use each technique is crucial for optimizing performance and maintaining clean, readable code. By mastering methods and computed properties, you gain powerful tools to handle dynamic behavior and data transformations within your Vue components effectively. Happy coding !❤️