在项目中接触到父组件传值给子组件的时候,想在子组件改变父组件传的值。(比如用于弹窗关闭)

但是正常来说,vue2是不允许子组件直接改父组件传进去的值的。

所以我们需要在子组件内定义自定义事件,通知父组件需要改值了。

一般情况下都是通过父组件传值给子组件 然后子组件自定义事件来通知父组件更新值。

//父组件
      <div class="imChat fadeIn" v-show="imChat" ref="imChat">
          <trsIm :imChat="imChat" @dialogVisibleEvent="showIm"></trsIm>
      </div>
//父组件方法
  showIm(imchat) {
                this.imChat = imchat;
            },
  //data中

 imChat: false
 
//子组件中定义
props: {
imChat: Boolean
}
//调用自定义方法更改外部父组件的值
closeIm(){
this.$emit('dialogVisibleEvent', false);
}

那么使用sync修饰符,就是简化了这一过程,
父组件直接这么写就行了,子组件还是需要触发的

例如 父组件传值给子组件 子组件修改这一值

//父组件
data () {
return {
sth: '传入子组件的值'
}
},
<template>
  <all-class-hour :sth.sync="sth"/> 
 </template>
//子组件props定义
props: {
sth: {
type: String,
required: true
}
}
//在template使用
<span>{{ sth }} </span>
//将sth传入子组件结果为

//在子组件调用自定义方法修改该值
mounted () {
console.log(this.$emit('update:sth', '通过这个改变父组件的值'))
}

//结果为

发现已经成功修改父组件的值!!

这里注意我们的事件名称被换成了update:age
update:是被固定的也就是vue为我们约定好的名称部分
age是我们要修改的状态的名称,是我们手动配置的,与传入的状态名字对应起来

这样就完成了,是不是感觉简单了很多。

注意事项:
这里我们必须在事件执行名称前加上update:的前缀才能正确触发事件。

总而言之

它主要的作用就是在修改外部参数的例子当中,作为参数回传值的语句的简写版,让这段常用代码,变得简洁而易用。

vue 修饰符sync的功能是:当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定。如果我们不用.sync,我们想做上面的那个弹窗功能,我们也可以props传初始值,然后事件监听,实现起来也不算复杂。

vue中的.sync修饰符用法的更多相关文章

  1. vue中通过.sync修饰符实现子组件修改父组件数据

    vue父子通讯是单向数据流,也就是子组件不能修改父组件的值,但是在一些情况下是需要这样做的. 先看官方文档: 接下来举例实现 1.实现一个双向数据绑定,子组件改变的时候,父组件也在改变 父组件 < ...

  2. vue中的.passive修饰符

    一.passive作用 详情请参考MDN(https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener)中 ...

  3. vue中的.native修饰符

    如果你想在某个组件的根元素上绑定事件,直接使用 @click=''function' 是不生效的,我们可以添加.native修饰符 @click.native=''function'',请看以下dem ...

  4. vue中的事件修饰符

    vue提倡的是在方法中只有对数据的处理,所以提供了事件修饰符用于DOM的事件处理,常用的事件修饰符有以下几个: (1). stop:阻止冒泡(通俗讲就是阻止事件向上级DOM元素传递) 点击内层div的 ...

  5. Vue中的native修饰符解析

    native修饰符 一般来说,vue本身提供了v-on:eventName这个语法来提供vue的时事件绑定,通常使用@eventName这个语法糖代替上述语法. 使用过程中没有考虑@eventName ...

  6. 怎样在 Vue 中使用 事件修饰符 ?

    Vue 中可以通过 v-on 来绑定事件监听函数, 不过事件会有许多额外情况, 比如 是否阻止冒泡 / 是否阻止重载 / 是否限制点击次数 / 是否可以通过按键触发 等等. 这时就需要使用到 事件修饰 ...

  7. 030——VUE中鼠标语义修饰符

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 029——VUE中键盘语义修饰符

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. (二)咋使用VUE中的事件修饰符

    1,stop修饰符:阻止事件冒泡 首先我们要明确H5的事件是从内向外进行冒泡的,写一个简单的DEMO 当我们点击按钮时,事件从内向外冒泡,依次触发绑定的事件,控制台信息如下 现在我们在click后面添 ...

随机推荐

  1. Azure & FaaS in Action

    Azure & FaaS in Action VSCode & Azure azure tenant select subscription Cloud Shell https://a ...

  2. Taro 版本

    Taro 版本 https://taro-docs.jd.com/taro/versions.html 1.x 1.3.34 https://taro-docs.jd.com/taro/docs/1. ...

  3. ES2019 features & ES-Next

    ES2019 features & ES-Next https://github.com/tc39/proposals Object.fromEntries(), trimStart(), t ...

  4. Nestjs mongodb

    nestjs 文档 mongoose 文档 使用"@meanie/mongoose-to-json"转换查询后返回的json数据 将"_id"转为"i ...

  5. Captain technology INC:高性能电池助力新能源车企销量暴涨

    来自七个欧洲国家的11个合作伙伴共聚一堂,投身于HyFlow研究项目,共同开发一种可兼顾高性能和能源需求的混合氧化还原液流储能系统.为此,科学家们希望将高性能钒氧化还原液流电池与超级电容器相结合. 到 ...

  6. NGK以强大的创新能力赋予NGK公链超级实用的特性

    公链从大趋势看是一个不断迭代的过程,不管是共识算法.网络架构.开发者协议都在一代一代不断完善跟创新. NGK公链作为公链赛道上的后起之秀,对于主流公链技术的局限性以及下一代公链技术的发展方向都有非常清 ...

  7. 一些小Tip

    导语 个人感悟,持续更新中... 正文 无论NIO还是AIO,都没有在数据传输过程(tcp/udp)作革命性的创新.他们在传输过程的效率和传统BIO是一样的,还是会产生阻塞(网络延迟,Socket缓冲 ...

  8. 纯CSS实现内容放大缩小效果

    先搭架子 再实现第一个内容 填充更多内容 拆掉border,查看最终效果 html代码 <!-- 服务 --> <div class="service"> ...

  9. 你真的懂 MP4 格式吗?

    MP4 文件格式又被称为 MPEG-4 Part 14,出自 MPEG-4 标准第 14 部分 .它是一种多媒体格式容器,广泛用于包装视频和音频数据流.海报.字幕和元数据等.(顺便一提,目前流行的视频 ...

  10. TERSUS无代码开发(笔记01)-按装下载和基础语法

    1.中国官网 https://tersus.cn/ 2.下载:https://tersus.cn/download/ 3.开发文档:https://tersus.cn/docs/ 4.基本元件说明 图 ...