Vue 3 反应性

讲师:Vue Msatery Team

口袋资源独家Vue Mastery付费课程独家中英文字幕配套资料齐全!

不到1/10的价格,即可享受同样的高品质课程,且可以完全拥有,随时随地都可以任意观看和分享。

Vue 3 反应性

在本课程中,我们将了解新的 Vue 3 Reactivity 系统。了解它是如何从头开始构建的,将帮助您了解 Vue 内部使用的设计模式,提高您的 Vue 调试技能,使您能够使用新的 Vue 3 模块化 Reactivity 库,甚至可能自己为 Vue 3 源代码做出贡献。

在本课中,我们将开始使用与 Vue 3 源代码中相同的技术构建一个简单的反应系统。

了解反应性

当您第一次看到 Vue 的反应系统工作时,它看起来就像魔法一样。

以这个简单的应用程序为例:

<div id="app">
  <div>Price: ${{ product.price }}</div>
  <div>Total: ${{ product.price * product.quantity }}</div>
  <div>Taxes: ${{ totalPriceWithTax }}</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>
  var vm = new Vue({
    el: '#app',
    data: {
      product: {
        price: 5.00,
        quantity: 2
      }
    },
    computed: {
      totalPriceWithTax() {
        return this.product.price * this.product.quantity * 1.03
      }
    }
  })
</script>

不知何故,Vue 的 Reactivity 系统只知道如果price发生变化,它应该做三件事:

  • 更新price我们网页上的值。
  • 重新计算乘以 的表达式price * quantity,并更新页面。
  • 再次调用该totalPriceWithTax函数并更新页面。

但是等等,我听到你想知道,Vue 的 Reactivity 系统如何知道更改时要更新什么price,以及它如何跟踪所有内容?

这不是 JavaScript 编程通常的工作方式

如果这对您来说不是很明显,那么编程通常不会以这种方式进行。例如,如果我运行这段代码:

let product = { price: 5, quantity: 2 }
let total = product.price * product.quantity  // 10 right?
product.price = 20
console.log(`total is ${total}`)

你认为它会打印什么?因为我们没有使用 Vue,所以它会打印 10。

>> total is 10

在 Vue 中,我们希望total随时更新pricequantity获得更新。我们想要:

>> total is 40

不幸的是,JavaScript 是过程式的,而不是反应式的,所以这在现实生活中行不通。为了做出total反应,我们必须使用 JavaScript 来使事物表现不同。

对于本课的其余部分以及本课之后的下两节课,我们将使用与 Vue 3 相同的方法(与 Vue 2 有很大不同)从头开始构建一个响应式系统。然后我们将查看 Vue 3 源代码以发现我们从头开始编写的这些模式。

发表回复

后才能评论

  • 每一个课程页面,都有演示地址选项,点击链接可以跳转到课程发布网站查看详细课程列表。
  • 绝大部分课程都有试看内容,可以先点击试看,再决定是否购买。
  • 本站课程均存储在阿里云盘或百度网盘中,由于阿里云盘对分享的文件类型有限制,所以课程资料和字幕会存储到蓝奏云盘中。
  • 阿里云盘和蓝奏云盘都是不限速下载的,你既可以选择在阿里云盘中在线学习,也可以选择下载到本地学习。
  • 课程下载到本地可以挂载中英文双字幕,请点击查看Potplayer挂载中英文双字幕教程
  • 本站所有课程,均提供mp4格式视频文件,中英文双字幕,配套资料齐全,不加密。
  • 每一个课程右侧下载面板中,都会有清晰度标识,大部分都是1080P或者720P,还有少数是超高清的。
  • 本站课程购买之后,均可以免费更新,所有课程,皆配有中文字幕。
  • 请注意,课程的中文字幕是根据英文字幕用谷歌翻译生成的,本非人工翻译。谷歌翻译准确度尚可,学习观看,没有问题。
  • 由于数字资源具有可复制性,一旦购买,不接受退款要求,请在购买之前,认真了解课程内容,确定是否需要。
  • 当然,如果有特殊情况,可以查看网站底部联系方式,联系站长说明问题,我会为你妥善处理。
  • 赞助本站VIP会员,可以免费下载所有课程,详情请查看VIP介绍