vue 之 .sync 修饰符示例详解


Posted in Javascript onApril 21, 2018

在一些情况下,我们可能会需要对一个 prop (父子组件传递数据的属性) 进行“双向绑定”。

在vue 1.x 中的 .sync 修饰符所提供的功能。当一个子组件改变了一个带 .sync 的prop的值时,这个变化也会同步到父组件中所绑定的值。

这很方便,但也会导致问题,因为它破坏了单向数据流。(数据自上而下流,事件自下而上走)

由于子组件改变 prop 的代码和普通的状体改动代码毫无区别,所以当你光看子组件的代码时,你完全不知道它合适悄悄地改变了父组件的状态。

这在 debug 复杂结构的应用时会带来很高的维护成本。于是我们在 vue 2.0 中移除了 .sync 。

但是在实际应用中,我们发现 .sync 还是有其适用之处的,比如在开发可复用的组件库时。(懵逼○△○)

我们需要做的只是  让子组件改变父组件状态的代码更容易被区分。

于是从 vue 2.3.0 开始,我们重新引入了 .sync 修饰符,但是这次它只是作为一个编译时的语法糖存在。他会被自动扩展为一个  自动更新父组件属性的 v-on 监听器。

例如

<child :foo.sync=”msg”></child> 就会被扩展为: <child :foo=”bar” @update:foo=”val => bar = val”>  (@是v-on的简写)

 当子组件需要更新 foo 的值的时候,他需要显示的触发一个更新事件:   this.$emit( “update:foo”, newValue );

初始状态:

 vue 之 .sync 修饰符示例详解

 点击之后的状态:

 vue 之 .sync 修饰符示例详解

 vue 之 .sync 修饰符示例详解vue 之 .sync 修饰符示例详解

原理就是父组件向子组件传递了一个函数:function (newValue) { this.msg = newValue; }

vue 之 .sync 修饰符示例详解

当使用一个对象一次性设置多个属性的时候,这个 .sync 修饰符也可以和 v-bind 一起使用。

例如:  <child  v-bind.sync = “{ message: msg, uC: uc}”></child>     (不能写成  :.sync="{*********}",否则会报错的)

这个例子会为 message 和 uC 同时添加用于更新的 v-on 监听器。

 

vue 之 .sync 修饰符示例详解vue 之 .sync 修饰符示例详解vue 之 .sync 修饰符示例详解

总结

以上所述是小编给大家介绍的vue 之 .sync 修饰符示例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
Prototype使用指南之string.js
Jan 10 Javascript
JS网页播放声音实现代码兼容各种浏览器
Sep 22 Javascript
Javascript表格翻页效果的具体实现
Oct 05 Javascript
jquery插件开发之实现jquery手风琴功能分享
Mar 10 Javascript
JavaScript中的pow()方法使用详解
Jun 15 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
Oct 23 Javascript
JS实现颜色梯度与渐变效果完整实例
Dec 30 Javascript
vue父组件向子组件动态传值的两种方法
Nov 11 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
Jul 09 Javascript
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
Dec 11 Javascript
微信小程序如何获取地址
Dec 24 Javascript
JavaScript实现拖拽和缩放效果
Aug 24 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
Apr 20 #Javascript
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
Apr 20 #Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
Apr 20 #jQuery
vue多页面开发和打包正确处理方法
Apr 20 #Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
Apr 20 #Javascript
Vue写一个简单的倒计时按钮功能
Apr 20 #Javascript
使用Vue如何写一个双向数据绑定(面试常见)
Apr 20 #Javascript
You might like
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
[原创]PHP中通过ADODB库实现调用Access数据库之修正版本
2006/12/31 PHP
php设计模式 Strategy(策略模式)
2011/06/26 PHP
php检测网页是否被百度收录的函数代码
2013/10/09 PHP
php Calender(日历)代码分享
2014/01/03 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
jQuery TextBox自动完成条
2009/07/22 Javascript
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
2012/02/16 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
jQuery电话号码验证实例
2017/01/05 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
2017/11/28 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
2019/04/29 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
JavaScript类的继承多种实现方法
2020/05/30 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Python实现的彩票机选器实例
2015/06/17 Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
2017/09/30 Python
Python网络编程详解
2017/10/31 Python
浅谈Pandas中map, applymap and apply的区别
2018/04/10 Python
python中用logging实现日志滚动和过期日志删除功能
2019/08/20 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
Python数据可视化:泊松分布详解
2019/12/07 Python
tensorflow自定义激活函数实例
2020/02/04 Python
UI自动化定位常用实现方法代码示例
2020/10/27 Python
英国精品买手店:Browns Fashion
2016/09/29 全球购物
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
Trina Turk官网:美国时装和泳装品牌
2018/06/10 全球购物
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
朝花夕拾读书笔记
2015/06/29 职场文书
初中同学会致辞
2015/08/01 职场文书
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python