6、计算属性与侦听器(conputed、watch)

简介: 6、计算属性与侦听器(conputed、watch)

1、计算属性与侦听器


区别
计算属性computed 多个值改变,为了得到一个结果,使用计算属性(为了得到一个值)
侦听器watch 一个值的改变,影响多个值,使用侦听器(为了观察一个值)
总结 在实际开发过程中,大部分问题都是可以用computed计算属性来解决,但检测路由侦听器watch来完成的


2、计算属性computed

<template>
  <div id="app">
    <!-- <h1>计算属性与侦听器</h1> -->
    <!-- 1、名字 -->
    <div class="case1">
      <h1>案例一:名字</h1>
      <p>{{ firstName + lastName }}</p>
      <p>{{ name }}</p>
    </div>
    <!-- 2、购物车 -->
    <div class="case2">
      <h1>案例二:购物车</h1>
      <table border="1px">
        <thead>
          <th>名称</th>
          <th>单价</th>
          <th>数量</th>
          <th>折扣</th>
          <th>总价</th>
          <th colspan="2">操作</th>
        </thead>
        <tbody>
          <tr>
            <td>{{ shopName }}</td>
            <td>{{ price }}</td>
            <td>{{ quality }}</td>
            <td>{{ discount }}</td>
            <td>{{ totalPrice }}</td>
            <td><button @click="sub">-</button></td>
            <td><button @click="add">+</button></td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      // 1、名字
      firstName: "Jas",
      lastName: "mine",
      // 2、购物
      shopName: "键盘",
      price: 100,
      quality: 1,
      discount: 0.5,
    };
  },
  // 1、计算属性(computed):多个值改变,为了得到一个结果,使用计算属性(为了得到一个值)
  computed: {
    name() {
      return this.firstName + this.lastName;
    },
    totalPrice() {
      return this.price * this.quality * this.discount;
    },
  },
  methods: {
    sub() {
      if (this.quality > 0) {
        return this.quality--;
      }
    },
    add() {
      return this.quality++;
    },
  },
};
</script>
<style scoped>
#app {
  display: flex;
  justify-content: space-around;
}
</style>

3、侦听器watch

<template>
  <div id="app">
    <!-- <h1>计算属性与侦听器</h1> -->
    <!-- 1、名字 -->
    <div class="case1">
      <h1>案例一:名字</h1>
      <p>{{ firstName + lastName }}</p>
      <p>{{ name }}</p>
    </div>
    <!-- 2、购物车 -->
    <div class="case2">
      <h1>案例二:购物车</h1>
      <table border="1px">
        <thead>
          <th>名称</th>
          <th>单价</th>
          <th>数量</th>
          <th>折扣</th>
          <th>总价</th>
          <th colspan="2">操作</th>
        </thead>
        <tbody>
          <tr>
            <td>{{ shopName }}</td>
            <td>{{ price }}</td>
            <td>{{ quality }}</td>
            <td>{{ discount }}</td>
            <td>{{ totalPrice }}</td>
            <td><button @click="sub">-</button></td>
            <td><button @click="add">+</button></td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      // 1、名字
      firstName: "Jas",
      lastName: "mine",
      // 2、购物
      shopName: "键盘",
      price: 100,
      quality: 1,
      discount: 0.5,
      totalPrice: 0,
    };
  },
  // 1、计算属性(computed):多个值改变,为了得到一个结果,使用计算属性(为了得到一个值)
  computed: {
    name() {
      return this.firstName + this.lastName;
    },
    // totalPrice() {
    //   return this.price * this.quality * this.discount;
    // },
  },
  // 2、侦听器(watched):一个值的改变,影响多个值,使用侦听器(为了观察一个值)
  watch: {
    quality(value) {
      this.totalPrice = this.price * value * this.discount;
    },
  },
  methods: {
    sub() {
      if (this.quality > 0) {
        return this.quality--;
      }
    },
    add() {
      return this.quality++;
    },
  },
};
</script>
<style scoped>
#app {
  display: flex;
  justify-content: space-around;
}
</style>


相关文章
|
5天前
|
JavaScript 数据处理
当数据发生变化时,`watch`函数是如何被触发的?
当数据发生变化时,`watch`函数是如何被触发的?
25 3
|
5天前
|
缓存 JavaScript 数据处理
vue的计算属性、侦听属性和方法
vue的计算属性、侦听属性和方法
24 0
|
9月前
|
缓存
computed【计算属性】watch【监听】methods【方法】的区别
computed【计算属性】watch【监听】methods【方法】的区别
|
5天前
|
缓存 JavaScript
computed/watch深度监听
computed/watch深度监听
14 1
|
5天前
|
缓存 JavaScript 前端开发
Vue的计算属性和侦听器:computed和watch的使用
【4月更文挑战第24天】Vue.js框架中的计算属性和侦听器是处理数据变化的关键特性。计算属性(computed)基于依赖缓存,仅在相关数据改变时重新计算,适合处理复杂逻辑。例如,计算总价可基于价格和数量动态更新。而侦听器(watch)在数据变化时执行回调,适用于异步操作和开销大的任务。计算属性与侦听器的主要区别在于缓存机制和应用场景,前者用于同步计算,后者用于响应数据变化后的特殊操作。理解这两者有助于优化Vue应用的性能。
|
5天前
vue3 watch 监听多值以及深度监听用法
vue3 watch 监听多值以及深度监听用法
56 0
|
5天前
|
JavaScript
Vue中的methods、computed计算属性和watch监听属性的使用和区别
Vue中的methods、computed计算属性和watch监听属性的使用和区别
|
5天前
当监听的属性是对象的引用时,`watch`选项是否会触发监听?
当监听的属性是对象的引用时,`watch`选项是否会触发监听?
13 2
|
5天前
|
JavaScript
如何使用`watch`选项来监听特定属性的变化?
如何使用`watch`选项来监听特定属性的变化?
13 0
|
5天前
如何监听vuex中的变量参数变化,用watch!
如何监听vuex中的变量参数变化,用watch!