先说判断方法:通过JSON.stringify将返回的proxy数据转换成字符串,在判断是否为空
// 如果此时options.value的返回值是proxy {}
console.log(JSON.stringify(options.value) === '{}') // true
// 如果此时options.value的返回值是proxy{nodeList: Array(7), edgeList: Array(8)}
console.log(JSON.stringify(options.value) === '{}') // false
if(JSON.stringify(options.value) !== '{}') {
...
}else {
...
}
其实如果是用ref或reactive定义的变量,在判断值是否为空时
let options = ref({})
console.log(options.value === {}) // true
也许是因为我当前的场景是,使用vuex的actions调接口,将接口返回的数据options存放在store里面,所以导致了不能直接判断
import { getTepologyGraph } from '@/service/serviceTepology'
import { ElMessage } from 'element-plus'
export default {
namespaced: true,
state: {
options: {}
},
mutations: {
GET_DATA(state, data) {
state.options = data || {}
}
},
actions: {
async getTepologyData({commit }, data) {
try{
let res: any = await getTepologyGraph(data)
if(res?.status === '200') {
commit('GET_DATA', res?.data || {})
}else {
commit('GET_DATA', {})
ElMessage.error(res?.message)
}
}catch(err) {
commit('GET_DATA', {})
}
}
}
}