问题记录:地图数据状态没有实时更新问题
问题:在地图上显示的点位信息没有实时更新,接口已经返回数据了,我也成功赋值了。
解决方法:
这是我的点位位置信息
mapData: [{//苏州中心地铁站name: '苏州中心',// 名称坐标nameX: '77.91%',nameY: '29.7%',// 当前状态status: 1,//点位x: '47%',y: '35%',// 弹出框坐标floatWindowX: '-562px',floatWindowY: '-70px',isShow: false,//选中放大isShow2: false,url: '1',stationCode: 'CQLPHJDZ',bigX: '77.91%',bigY: '29.7%',size: '22px',}...]
可以看见我的定位信息是页面上写死固定了,但是需求是:站点的点位状态会变化,页面需要实时响应,下面是我接口调用的方法,这个问题很简单,但是粗心的话会很容易忽略,就是因为点位状态和接口返回的点位状态字段不一样,而我页面上定义的数据结构字段status并没有接口返回的字段stationStatus,就导致了接口字段会因为字段不存在而响应式失败。
async getStationPosition() {const res = await stationPosition()console.log('1111110站点信息获取', res)console.log('地图信息', res)if (res.code == '200') {this.treeData = res.result//非常关键,初始化 stationStatus,这样后续接口更新值时就不会因为字段不存在而响应失败,地图上的圆点颜色就可以进行联动this.mapData = this.mapData.map((item) => ({...item,stationStatus: '0', // 或 null,确保字段存在}))//this.treeData.forEach((item) => {this.mapData.forEach((i) => {if (item.stationName == i.name) {i.stationStatus = item.stationStatus}})})console.log('mapData>>>>>>>>>>>>>>>>>>>>', this.mapData)}},
所以如果定义的字段不存在,那么即使接口返回字段也会失去响应式。