请问vue中props传过来的值a,赋值给data中的值b,b变化,a也跟着变化,怎样避免props传过来的值不随着不变化?

代码如下
data() {

returen {
    a: this.b,
}

},
props: ['b'],
b是数组,貌似是数组的原因才导致这样的。请问怎么让b一直保留原始值,或者不被改变,或者怎样用一个值保留b刚开始传过来的值。

阅读 9.6k
6 个回答

对象深拷贝一份再赋值

进行对象的深拷贝再赋值,简单的方法是利用JSON对象的parse和stringify方法。
例如:

copyedObj=JSON.parse(JSON.stringify(originObj));

值得注意的是,JSON对象在低版本浏览器中不存在,可能存在兼容问题,可以用相关类库来处理,比如lodash

除了深度拷贝数据外,还有一种方法是一种方法利用computed的计算属性

computed: {
    a() {
        return this.b;
    }
},

props: ['b']

既能避免子组件修改父组件数据,还能保证传入数据变更时,子组件的a也能同步变化。

JSON.parse(JSON.stringify())

正常来说,子父组件通信,数据是单向流动,子组件不会影响父组件的数据,只能从父组件传递到子组件。所以应该是你的代码出问题了

通过一个中间变量来转存一下。
这个中间变量可以是当前vue组件实例,也就是this上,然后将this上的值赋给data中你要绑定的值上面。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题