vue的.sync用法,使props的单向数据流变为双向数据流

起源:

.sync这个修饰符,平时用的没那么多,直到有次发现子组件中的数据,除了需要来源于父组件中传来的值,还需要子组件本身的单击修改props自身的值,这样一来子组件中的数据来源就不止父组件的传值,还有自身的传值修改了。

印象中vue文档中是有这样一个api存在的,后来一查,果然存在,这个.sync实现了prop的双向绑定,当子组件改变了一个带.sync的prop的值时,这个变化也会同步到父组件当中去,但这破坏了单向数据流。(数据自上而下流,事件自下而上走)这也就是为什么vue官方文档推荐以 update:myPropName 的模式触发事件取而代之。
**********例如:

  • 在父组件中:
<child :show="isShow" @update:show="val => isShow = val">
  • 在子组件中:
this.$emit("update:show", newVal);

在这种情况下,显得未免有些累赘了,这时候vue修饰符大法登场!!!一个.sync让你轻松实现~~~~

  • 在父组件中:
<child :show.sync="isShow"></child>

需要注意的是:带有.sync的v-bind不能和表达式一起使用,(例如 v-bind:title.sync=”doc.title + ‘!’” 是无效的)。

另外:

当我们用一个对象同时设置为多个prop的时候,也可以使用.sync和v-bind将这个对象的各个属性分发绑定到上面

<text-document v-bind.sync="doc"></text-document>

这个时候会把 doc 对象中的每一个属性 (如 title) 都作为一个独立的 prop 传进去,然后各自添加用于更新的 v-on 监听器。


今天的分享就到这里啦~~~~
最近工作有点忙,没时间发博了,好多要总结的东西,先记小本本上,哭唧唧??

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值