不太理解这段代码的意思,这里是怎么看到父组件有 update:show 这个事件的?

讨论数量: 2
pardon110

.sync 用 vuejs 官方的话翻译过来,是个指令修饰符,其具体意义由该指令定义给出。如果你想仅从名称,是不知道干什么,需要从它的定义入手,道理好比给你一个函数名,你是不知道这个函数做了什么,要知其义,就必须参阅函数定义。换句话来说,vue 中的模板只是一种另类的接口描述,其意义由 vue 编译器解析,参见地址

6年前 评论

/:show="msgShow" 表明 Message 组件的 show 和当前组件的 msgShow 建立了对应关系,
@update:show="val => msgShow=val" 自定义了一个事件,专由 Message 组件调用,来修改当前组件的 msgShow 值,msgShow 值的改变又可以反应到 Message 组件的 show 属性。

为什么要搞这么复杂,应该是因为 Props 属性一般是由父组件来改变,很少由自身来修改,如果是自身来修改的话则一定要保证父级的对应属性也要相应改变,可这样会导致很大的开销,所以不如就直接用事件来修改父级已达到修改自身的目的。

5年前 评论