出现这个问题就需要观察data前面的变量是否为undefined,或许很快就可以找到问题所在,或许需要找很久,比如下面这个例子:
async action_get_list({ commit, state }, { query }) {
const res = await api.listApi(query);
const cacheList = state.cachList || [];
if (res?.code == 0) {
res.data.list = [...cacheList, ...res.data.list];
let list = res.data.list;
let tmplist = [];
list?.forEach(item=>{
tmplist.push(item.id);
})
// ......
let res;
try{
res = checkInstalled(JSON.stringify(tmplist)); //这里得到的结果是undefined
}catch(e){
console.log(e);
}
// ......
commit("update_list", { data: Object.assign(res.data, {list: list}) });
}
}
有时候某个地方的代码太多了,就可能出现定义了相同名字的变量,然后看半天不知道报错问题出在哪,上面这个例子中就是定义了两次res,一个是const,一个是let定义的,报的错是data前面的变量是undefined,其实就是因为后面的res把前面res的值覆盖掉了,改一下res的名字就解决了。
所以记住:定义变量时注意不要在一个地方定义多次,最好取变量名可以做到见名知意。