vue2,官方不推荐直接修改prop的值,那如果是对象呢?

2023-06-27 315 0

比如封装了一个表单数据,props传入的是一个对象data,然后data里的每一项都绑定表单中的每一项,这势必涉及到双向绑定,如果是这样的话不是违反官方的规约了嘛?

所以说 props 传入的值就不应该参与双向绑定啊。需要和外部变量隔离,比如说在组件初始化后复制一份数据出来,赋值给当前组件的某一个变量(用到什么属性取什么属性,避免深浅拷贝问题),然后修改完毕之后再统一 $emit 到外部。

如果有修改并且是 Vue2 可以考虑使用 .sync 修饰符 这个方式。
或者 自定义组件v-model 来实现内外部变量的双向绑定(其实也是通过 props + $emit

主要就是避免一些值在你不知情的情况下被修改了,引发一些没有必要的Debug困扰。

确实是不推荐的, 对象看起来可以是因为对象是引用传递, 不是值传递, 因此你修改对象里面的内容不会被vue监听到, 看起来好像是修改了prop, 但实际上并没有

在这种情况下一般会在子组件用新的变量接收改变的值, 然后注册事件, 在父组件中修改

回答

相关文章

nuxt2部署静态化和ssr的时候访问首页先报404再出现首页为什么?
`clip-path` 如何绘制圆角平行四边形呢?
多线程wait方法报错?
VUE 绑定的方法如何直接使用外部函数?
vue2固定定位该怎么做?
谁有redis实现信号量的代码,希望借鉴一下?