函数取值反复被调用出错
const newArr = toRaw(data.importData)
/ /目的是检查 newArr数组 , 并返回 三个值,ret.resultData , ret.rData , ret.vData
// 自定义函数repeatCheckList 对 newArr 进行了处理
const ret = repeatCheckList({ // 检查数据的函数
key: data.notRepeatField, //函数要的参数
newArr: newArr, // 函数要的参数
oldArr: data.oldData, // 函数要的参数
})
// 下面取函数返回的三个值 ret.resultData , ret.rData , ret.vData
const rData = ()=>{ if(ret.rData){ return ret.rData } }
const vData = ()=>{ if(ret.vData){ return ret.vData } }
data.importData = ()=>{ if (ret.resultData) { return JSON.parse(JSON.stringify(ret.resultData)) } }
现在问题是,第一次取值是成功,第二次就出错了,
newArr 数组发生了变化,函数运行失败
其实函数运行一次得到三个值就可以了,发现每取一次函数就运行一次,而因为newArr 发生了变化,函数就报错
怎么处理这种类似的问题
为什么最后给import data赋值为函数,它不是吗三个数据的来源吗?
第一种:把const改成let呢
第二种:const newArr = toRaw(data.importData)
let newDataImp = {...data.importData};
newDataImp = ()=>{ if (ret.resultData) { return JSON.parse(JSON.stringify(ret.resultData))}}
你在函数repeatCheckList内部,有尝试修改newArr的类型吗,比如newArr是一个数组,在函数内部尝试修改成对象这种,导致函数报错