最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 《浅析Vue》——.sync修饰符

    正文概述 掘金(Lion7yu)   2021-03-12   515

    介绍

    在 Vue 的官方文档vue .sync 修饰符中显示. sync 修饰符是在 2.3.0 版本时新增的,但 vue .sync 修饰符早在 Vue 1.0版本就依旧存在了,但是在2.0时又被移除了。在 2.0 版本之后的实际应用中,在某些情况下我们可能需要对一个 prop 进行“双向绑定”。不幸的是,真正的双向绑定会带来维护上的问题,因为子组件可以变更父组件,且在父组件和子组件都没有明显的变更来源。

    我们需要让子组件改变父组件状态的代码容易被区分,所以2.3.0之后又重新引入了 .sync修饰符,但是这次它只是作为一个编译时的语法糖存在。它会被扩展为一个自动更新父组件属性的 v-on 监听器。

    实例说明

    背景

    1. 小明想要买装备,但是没钱
    2. 小明给给爸爸老明发微信(触发事件)向他要钱
    3. 老明给了他一笔钱"total",让他自己看着办

    Vue 的规则/限制(Vue自带的)

    • 组件不能修改props外部数据
    • this.$emit 可以触发事件,并传参数
    • event可以获取event 可以获取 event可以获取emit 的参数

    APP.vue

    <template>
      <div class="app">
        App.vue 我现在有 {{total}}
        <hr>
        <Child :money="total" v-on:update:money="total = $event"/>
      </div>
    </template>
    
    <script>
    import Child from "./Child.vue";
    export default {
      data() {
        return { total: 10000 };
      },
      components: { Child: Child }		//因为只用过一次并且同名,可以简写为 components:{Child}
    };
    </script>
    
    <style>
    .app {
      border: 3px solid red;
      padding: 10px;
    }
    </style>
    
    

    语法糖

    在上述代码中:

    <Child :money="total" v-on:update:money="total = $event"/>
    


    完全等价于:

    <Child :money.sync = "total" />
    


    这就是 .sync 的语法糖,它可以直接是自动更新父组件属性的 v-on 监听器。

    Child.vue

    <template>
      <div class="child">
        {{money}}
        <button @click="$emit('update:money', money-100)">	//关键
          <span>买装备</span>
        </button>
      </div>
    </template>
    
    <script>
    export default {
      props: ["money"]
    };
    </script>
    
    
    <style>
    .child {
      border: 3px solid green;
    }
    </style>
    


    在代码中如果直接修改 money 的值,如下:

     <button @click="money -= 100">
    


    系统就会报错:
    《浅析Vue》——.sync修饰符
    这句话的意思是:Vue 根据之前提到的第一条规则即组件不能修改props外部数据,提示避免直接更改prop,因为每当父组件重新渲染时,该值都会被覆盖。你应该使用一个date 或者 计算属性。总之就是不能直接改。

    效果

    初始:
    《浅析Vue》——.sync修饰符
    点击买装备后:
    《浅析Vue》——.sync修饰符

    总结

    vue 修饰符sync的功能是:当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定。它在 Vue 中作为语法糖存在,会被扩展为一个自动更新父组件属性的 v-on 监听器。


    起源地下载网 » 《浅析Vue》——.sync修饰符

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元