0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Vue双向数据绑定的实现

汽车玩家 来源:今日头条 作者:新钛云服 2020-05-05 21:28 次阅读

现在圈子中许多JS框架都有自己的数据相应引擎。通过了解其工作原理,我们可以在实际开发中更有效地使用它。在下面的文章中,我们构建了您在Vue源代码中看到的相同类型的Reactivity。

TheReactivity System

当你第一次看到它时,Vue的响应系统看起来很神奇。看如下代码片段:

Vue双向数据绑定的实现

Vue双向数据绑定的实现

不知何故,Vue只知道如果价格发生变化,它应该做三件事:

更新我们网页上的价格值。

重新计算乘以price * quantity的表达式,并更新页面。

再次调用totalPriceWithTax函数并更新页面。

但是等等,你应该会觉得奇怪,当价格变化时,Vue如何知道要更新什么,以及如何跟踪所有内容?

Vue双向数据绑定的实现

这并不是JS编程中常规的工作方式。

如果你不明白,那我们试着看看常规的js是怎么运行的。例如,如果我运行此代码:

Vue双向数据绑定的实现

你觉得它打印什么?由于我们没有使用Vue,它将打印10。

Vue双向数据绑定的实现

在Vue,我们希望每当价格或数量更新时,总计都会得到更新。我们想要:

Vue双向数据绑定的实现

不幸的是,js是程序性的,而不是被动的,所以这在现实生活中不起作用。为了使数据变化得到相应,我们必须使用js来使事情表现不同

问 题

我们需要保存计算总数的方式,以便在价格或数量变化时重新运行。

解决方案

首先,我们需要一些方法告诉我们的应用程序,“我即将运行的代码,存储它,我可能需要你在另一个时间运行它。”然后我们将要运行代码,如果价格或数量变量得到更新,再次运行存储的代码。

Vue双向数据绑定的实现

请注意,我们在目标变量中存储了一个匿名函数,然后调用了一个记录函数。使用ES6箭头语法我也可以这样写:

Vue双向数据绑定的实现

请注意,我们在目标变量中存储了一个匿名函数,然后调用了一个记录函数。使用ES6箭头语法我也可以这样写:

Vue双向数据绑定的实现

记录的方法:

Vue双向数据绑定的实现

我们正在存储目标(在我们的例子中是{total = price * quantity}),所以我们可以稍后运行它。

Vue双向数据绑定的实现

这将遍历存储阵列中存储的所有匿名函数并执行它们中的每一个。

然后在我们的代码中,我们可以:

Vue双向数据绑定的实现

很简单吧?如果您需要阅读并尝试再次掌握它,这里的代码就完整了。仅供参考,如果您想知道原因,我会以特定的方式对此进行编码。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    13

    文章

    4261

    浏览量

    85655
  • 变量
    +关注

    关注

    0

    文章

    613

    浏览量

    28328
  • vue
    vue
    +关注

    关注

    0

    文章

    57

    浏览量

    7803
收藏 人收藏

    评论

    相关推荐

    机智云智家APP的设备扫描与绑定限制

    版应用,旨在实现对智能设备的管理和控制。通过智家APP,用户可以方便地与支持的设备进行互动,享受智能家居带来的便利。然而,绑定设备的能力并非对所有用户开放。Q绑定设备的条件
    的头像 发表于 09-22 08:02 200次阅读
    机智云智家APP的设备扫描与<b class='flag-5'>绑定</b>限制

    智能电表双向计量是什么意思?

    智能电表双向计量是指智能电表能够同时记录电力的输入和输出数据,即不仅能够计量用户消耗的电力,还能计量用户向电网输送的电力。本文将详细探讨智能电表双向计量的功能、技术实现及其应用场景。一
    的头像 发表于 09-13 17:28 484次阅读
    智能电表<b class='flag-5'>双向</b>计量是什么意思?

    AN87216双向数据传输数据丢失是什么原因引起的?

    测试 AN87216 ,双向数据传输数据丢失 ,数据或问题,请问这个是可能什么引起,谢谢!
    发表于 07-24 06:50

    bootstrap框架和vue框架的区别

    响应式移动优先的网页。Bootstrap的核心设计理念是“移动优先”,即优先考虑移动设备的显示效果,然后通过媒体查询等技术实现对不同设备的适配。Bootstrap提供了一套丰富的CSS和JavaScript组件,可以快速实现各种常见的网页布局和交互效果。
    的头像 发表于 07-11 09:55 766次阅读

    如何手动往esp32 arp列表中添加自定义的arp绑定信息?

    我目前需要手动往esp32 arp列表中添加自定义的arp绑定信息,而非arp请求获得,因为另一方设备无法完成arp应答 如IP为:192.168.88.2 MAC为:00:0A:35:01:FE:C0 arp绑定后我需要实现
    发表于 06-07 08:14

    鸿蒙开发接口Ability框架:【@ohos.application.formBindingData (卡片数据绑定类)】

    卡片数据绑定模块提供卡片数据绑定的能力。包括FormBindingData对象的创建、相关信息的描述。
    的头像 发表于 05-06 17:25 454次阅读
    鸿蒙开发接口Ability框架:【@ohos.application.formBindingData (卡片<b class='flag-5'>数据</b><b class='flag-5'>绑定</b>类)】

    udp_bind这个绑定的端口怎么解除?

    请教下,udp_bind 这个绑定的端口,刚开始是可以的,但是重新绑定时返回错误,有什么方法可以在 重新绑定前解除之前的绑定
    发表于 04-22 07:41

    电流监控如何实现高效双向电流检测

    为避免上述情况发生,设计人员可以采用集成、高速、精确的双向 CSA。设计人员可以选择带有内部低电感分流电阻的集成双向 CSA 构成最紧凑的解决方案,或者选择使用外部分流器的 CSA 实现更灵活的设计和布局。
    发表于 04-11 09:14 378次阅读
    电流监控如何<b class='flag-5'>实现</b>高效<b class='flag-5'>双向</b>电流检测

    关于stm32u575芯片作为usb device和PC实现双向通信的疑问

    平台:STM32U575qii-EV板 模块:USBX,ThreadX 目的:stm32u575芯片作为usb device和PC实现双向通信,device为HID Custom类 现状:当前
    发表于 03-13 06:56

    请问tc233 Uart收发数据如何绑定到DMA?

    请问tc233 Uart收发数据如何绑定到DMA?绑定到DMA之后中断触发还是原来的 IfxCpu_Irq_installInterruptHandler()这个函数里绑定的中断服务函
    发表于 01-22 06:27

    服务器宝塔面板怎么绑定多个ip?

    服务器宝塔面板怎么绑定多个ip?在宝塔面板中绑定多个IP地址可以通过以下步骤完成: 1、登录宝塔面板 使用你的浏览器访问宝塔面板的网址,并使用管理员账号和密码登录。 2、进入站点管理 在宝塔面板左侧
    的头像 发表于 01-12 17:29 1605次阅读

    一文看懂Vue3响应式系统原理

    Vue3 中,响应式系统的实现基于 ES6 的 Proxy 对象。Proxy 可以直接监听对象和数组的变化,而无需对每个属性进行监听,从而大大提高性能。同时,Proxy 也可以解决 Object.defineProperty 无法监听数组的问题。
    的头像 发表于 12-07 10:55 1632次阅读
    一文看懂<b class='flag-5'>Vue</b>3响应式系统原理

    如何绑定ip地址与mac物理地址呢?

    如何绑定ip地址与mac物理地址呢? 绑定IP地址与MAC物理地址是一种网络管理和安全措施,可以帮助确保网络设备的身份验证和安全性。在这篇文章中,我们将详细介绍如何进行IP地址与MAC物理地址的绑定
    的头像 发表于 12-07 09:33 6490次阅读

    碳化硅MOSFET设计双向降压-升压转换器实现97%能效

    碳化硅MOSFET设计双向降压-升压转换器实现97%能效
    的头像 发表于 12-04 16:12 623次阅读
    碳化硅MOSFET设计<b class='flag-5'>双向</b>降压-升压转换器<b class='flag-5'>实现</b>97%能效

    基于springboot和vue框架的Java

    Vue项目的环境,并展示从前端到后端的完整开发流程。接着,将重点关注前后端分离的开发模式,并介绍如何通过RESTful API进行数据交互。最后,将分享一些实践中的经验和技巧,以及对未来发展的展望。 一
    的头像 发表于 12-03 15:15 961次阅读