问题背景:
在 vuex 中,设置全局变量,通过 mutations 中的方法设置改动
state: () => ({
provSys: []
}),
mutations: {
set_provSys: (state, arr) => {
state.provSys = arr;
}
}
在组件中引用:
methods: {
...mapMutations('sqa', [
'set_provSys'
]
}
方法中运用:
this._data = this.get_provSys;
// ...
// ...
this._data = [];
问题来了:发现在 this._data = []; 之后,vuex中的 provSys,也被改动了
解决方案:
需要对数据进行深度克隆:
function deepClone(obj) {
let newObj = Array.isArray(obj) ? [] : {};
if (obj && typeof obj === 'object') {
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
newObj[key] =
obj && typeof obj[key] === 'object' ? deepClone(obj[key]) : obj[key];
}
}
}
return newObj;
}
let _a = this.get_provSys;
// ...
// ...
this._data = deepClone(_a);