子组件如何修改父组件传递的值

1,131 阅读1分钟

诸位大佬,看到标题后,暂且稍安勿躁,大家都知道Vue中的父子prop之间会形成一个单向数据流即:父级prop的更新会向下流动到子组件中,但是反过来就不行。 这样会防止从子组件意外会更改父组件的状态。但是也有例外,在子组件中会更改父组件传递进来的值,具体的解决方案在Vue的官网中也有案例以及说明cn.vuejs.org/v2/guide/co… 接下来我分享一下,我在项目中遇到的情况,以及另外一种解决方案: 项目结构以及说明:

img0.jpg

红框内是父组件,chemical-dialog.vue 和 material-dialog.vue都是使用了elementUI的弹窗

项目的效果图:

img1.jpg

img2.jpg

我想要做的一个效果就是,在父级组件中打开弹窗,然后点击弹窗子组件中的取消按钮,该弹窗就会消失。

解决方案:了解一下.sync,下面直接贴如何使用:

img3.jpg

img4.jpg

img5.jpg

img6.jpg

img7.jpg 这样的话,效果就实现了

在2.3.0中 .sync是一个编译时的语法糖,它会被扩展为一个自动更新父组件属性的v-on监听器,其实.sync在Vue的官网上也有案例分析 cn.vuejs.org/v2/guide/co… 。哈哈哈,原本想要做一下技术分享,最后发现被我单纯的做成了bug记录,如果有大佬看到觉得记录的不太好,希望可以提出建议,勿喷,谢谢大家,在此感谢 _littleTank_作者,大家有看不懂的地方,可以直接访问该作者文章www.jianshu.com/p/6b062af8c…