对el-dialog进行封装 未理清逻辑,造成直接修改prop
控制台报警告:
Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value.
# 翻译:避免直接改变 prop,因为每当父组件重新渲染时,值都会被覆盖。 相反,根据prop的值使用数据或计算属性。
这里我并没有改变prop,问题出在底层的封装的dialog
<el-dialog
:visible.sync="xxxVisible"
>
.sync 修饰符,是个不错的语法糖;用更少的代码,实现了子组件emit,父组件做赋值更新的操作
所以
我在封装时,也借鉴了这个思路
<my-dialog :xxx-visible.sync="xxxxVisible">
这里我为了能在父级操作visible相对于是一层层传递
问题就出在visible.sync,它可以修改xxxVIsible
,也就是组件的 prop
实际出问题的场景:
当点击对话框右上方关闭图标时,xxxVIsible
会被直接修改
解决办法
删除掉 dialog 上的 sync 修饰符,这样 关闭图标会失效
根据 sync 修饰符 原理 添加 监听 并将事件向上层emit
@update:visible="value => $emit('update:xxxxVisible', value)"
还可以不去除sync 用 data 来承接 prop
然后监听 data 变化,然后 emit
内容会不断更新,欢迎批评指正。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)