前言
本想代码内部封装一个小小弹窗,所有的弹窗配置项放在一起,内容直接使用插槽的形式,这样底部的“确定”“取消”按钮就不用每次都去写loading,弹窗的配置项也能统一管理,但是错误的时机使用了v-model,记录一下。
错误现象
错误代码
使用的是V3+vxe组件库(UI库不重要,需要什么看api就行),错误代码上图: 左侧是父页面,右侧字页面
父页面双向绑定visinle,同时,子页面弹窗的v-model也绑定到了props.visible, 子页面关闭的时候更新一下visible。平平无奇的一个双向绑定。
运行没任何问题。
错误现象
就是有个警告:
提示我绑定了一个只读属性。
解决方案
提示我绑定的属性不对、那就改,改个字段好了。
换个形式、接着绑,运行关闭的时候直接公开一个方法出去,父级关。
运行起来也没问题。
吃饭的时候还在琢磨这个事情,这个东西本身不复杂、让我这么复杂的干,肯定还有出错的地方,重新捋一下思路,发现是自己陷入了一个误区:父级跟子级都想用v-model图省事,本身没任何问题,问题点就再props内的是只读属性,不能双向绑定,而且我的思路也出来了,就是父级负责整体的显示与隐藏,子级内不用管是否显示隐藏,全权交给父级,再扒拉一下api,发现能不用双向绑定,用传值也能控制dialog也能显示与隐藏。那就直接改,不使用双向绑定了。