官术网_书友最值得收藏!

Watched properties

Computed properties are not always the answer to our reactive data problems, sometimes we need to create our own custom watched properties. Computed properties can only be synchronous, must be pure (for example, no observed side-effects), and return a value; this is in direct contrast to a watched property, which is often used to deal with asynchronous data.

A watched property allows us to reactively execute a function whenever a piece of data changes. This means that we can call a function every time an item from our data object changes, and we'll have access to this changed value as a parameter. Let's take a look at this with a simple example:

Note: Axios is a library that will need to be added to the project. To do so, head to https://github.com/axios/axios and follow the installation steps provided.
<template>
<div>
<input type="number" v-model="id" />
<p>Name: {{user.name}}</p>
<p>Email: {{user.email}}</p>
<p>Id: {{user.id}}</p>
</div>
</template>

<script>
import axios from 'axios';

export default {
data() {
return {
id: '',
user: {}
}
},
methods: {
getDataForUser() {
axios.get(`https://jsonplaceholder.typicode.com/users/${this.id}`)
.then(res => this.user = res.data);
}
},
watch: {
id() {
this.getDataForUser();
}
}
}
</script>

In this example, any time our text box changes with a new id (1-10), we get information about that particular user, like so:

This is effectively watching for any changes on the id and calling the getDataForUser method, retrieving new data about this user.

Although watched properties do have a lot of power, the benefits of computed properties on performance and ease of use should not be understated; therefore wherever possible, favor computed properties over watched properties.

主站蜘蛛池模板: 年辖:市辖区| 门头沟区| 延边| 蒙山县| 关岭| 襄垣县| 涿鹿县| 绥德县| 恩施市| 饶平县| 商丘市| 健康| 萍乡市| 睢宁县| 英超| 那曲县| 枣阳市| 抚顺县| 绥江县| 济宁市| 巴彦县| 阿克| 新田县| 呼伦贝尔市| 东光县| 东兴市| 宁国市| 澄迈县| 司法| 额尔古纳市| 五河县| 冷水江市| 定安县| 桂平市| 内乡县| 梁平县| 灯塔市| 新蔡县| 楚雄市| 黄浦区| 平原县|