计算属性 computed 和方法 methods 的区别

发布于 2025-02-24 00:15:38 字数 1753 浏览 0 评论 0

区别

  1. 计算属性有缓存,计算属性会把函数执行一次,把结果存起来,依赖的值改变,会重新赋值。
  2. 函数是每次模板编译都会执行。只要有响应式属性改变,视图刷新,函数就执行。

方法

  <div>
    <div>
      {{msg}}
    </div>
    <div>
      {{getText()}}
    </div>
    <button @click="handleClick">点击</button>
  </div>

  <script src="https://cdn.bootcss.com/vue/2.6.10/vue.common.dev.js"></script>

  <script>
    let vm = new Vue({
      el: '#app',
      data: {
        msg: 'hello',
        text: 'world'
      },
      methods: {
        handleClick () {
          this.msg = 'hello1'
        },
        getText () {
          let text = this.text + 1
          console.log(text)
          return text
        }
      }
    })
  </script>

计算属性

  <div>
    <div>
      {{msg}}
    </div>
    <div>
      {{getText}}
    </div>
    <button @click="handleClick">点击</button>
  </div>

  <script src="https://cdn.bootcss.com/vue/2.6.10/vue.common.dev.js"></script>

  <script>
    let vm = new Vue({
      el: '#app',
      data: {
        msg: 'hello',
        text: 'world'
      },
      computed: {
        getText () {
          let text = this.text + 1
          console.log(text)
          return text
        }
      },
      methods: {
        handleClick () {
          this.msg = 'hello1'
        }
      }
    })
  </script>

我们可以将同一函数定义为一个方法而不是一个计算属性。两种方式的最终结果确实是完全相同的。然而,不同的是计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。这就意味着只要 text 还没有发生改变,多次访问 getText 计算属性会立即返回之前的计算结果,而不必再次执行函数。而方法只要页面中的属性发生改变就会重新执行,所以第一段代码输出两次结果,第二段代码只输出一次。

页面中最好不要直接使用函数,尽量使用 computed。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

雨巷深深

暂无简介

文章
评论
27 人气
更多

推荐作者

梦途

文章 0 评论 0

蓝眼睛不忧郁

文章 0 评论 0

134fengkuang

文章 0 评论 0

yang18

文章 0 评论 0

属性

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文