美文网首页
Vue sync修饰符

Vue sync修饰符

作者: 小小的开发人员 | 来源:发表于2019-04-01 00:00 被阅读0次

  在一些情况下,可能会需要对一个 prop 进行双向绑定。事实上,这正是Vue1.x中的 .sync修饰符所提供的功能。当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定的值。这很方便,但也会导致问题,因为它破坏了单向数据流的假设。由于子组件改变 prop 的代码和普通的状态改动代码毫无区别,当光看子组件的代码时,完全不知道它何时悄悄地改变了父组件的状态。这在 debug 复杂结构的应用时会带来很高的维护成本,上面所说的正是在 2.0 中移除 .sync 的理由。
  从 2.3.0 起重新引入了 .sync 修饰符,但是这次它只是作为一个编译时的语法糖存在。它会被扩展为一个自动更新父组件属性的 v-on 侦听器

<comp :foo.sync="bar"></comp>

会被扩展为:

<comp :foo="bar" @update:foo="val => bar = val"></comp>

当子组件需要更新 foo 的值时,它需要显式地触发一个更新事件:

this.$emit('update:foo', newValue)

因此,可以使用.sync来简化自定义事件的操作,实现子组件向父组件的数据传递。

<div id="app">
  <parent></parent>
</div>
<script src="https://unpkg.com/vue"></script>
<script>
var childNode = {
  template: `
  <div class="child">
    <div>子组件数据:{{childMsg}}</div>
    <input v-model="childMsg">
    <button @click=add >+1</button>
  </div>
  `,
  data(){
    return{
      childMsg: 0
    }
  },
  methods:{
    add(){
      this.childMsg++;
      this.$emit('update:foo',this.childMsg);
    }
  }
};
var parentNode = {
  template: `
  <div class="parent">
    <p>父组件数据:{{msg}}</p>
    <child :foo.sync="msg"></child>
  </div>
  `,
  components: {
    'child': childNode
  },
  data(){
    return {
      'msg':0
    }
  }
};
// 创建根实例
new Vue({
  el: '#app',
  components: {
    'parent': parentNode
  }
})
</script>

相关文章

  • 深入理解vue 修饰符sync【 vue sync修饰符示例】

    在说vue 修饰符sync前,我们先看下官方文档:vue .sync 修饰符,里面说vue .sync 修饰符以前...

  • 2018-10-11

    vue 修饰符sync【 vue sync修饰符示例】 先看下一个参考的文章:深入理解vue 修饰符sync【 v...

  • vue3 的 v-model

    子组件 类似于vue2的.sync 修饰符

  • .sync修饰符及MVVM

    .sync修饰符 父组件 子组件 vue的数据响应式

  • 关于vue的一些实践

    参考文章:vue中需要注意的问题总结(上) 1.对于sync的使用 参考vue的修饰符sync 在有些情况下,我们...

  • Vue3的组件上v-model的用法

    Vue3的组件上v-model的用法用法示例: 相当于 vue 2 注:Vue3 v-model没有.sync修饰符

  • vue .sync修饰符

    今天又翻了一下vue文档,.sync修饰符一直没有领会,今天总算弄清楚了,它允许在子组件中直接改变父组件数据,而我...

  • vue sync 修饰符

    原文地址:https://juejin.im/post/5b6afe9e5188251b1f228666 sync...

  • vue sync 修饰符

    sync 修饰符 子组件 父组件 点击促发后content数据会变成子组件传的值

  • Vue sync修饰符

      在一些情况下,可能会需要对一个 prop 进行双向绑定。事实上,这正是Vue1.x中的 .sync修饰符所提供...

网友评论

      本文标题:Vue sync修饰符

      本文链接:https://www.haomeiwen.com/subject/llppbqtx.html