无法正确访问 Vue 实例的属性

修改前代码(错误部分)

javascript 复制代码
uni.getLocation({
  type: 'gcj02',
  success: function(res) {
    const latitude = res.latitude;
    const longitude = res.longitude;
    const location = [];
    location.push(latitude);
    location.push(longitude);
    this.locationData = location; // 这里的this指向错误
    console.log(this.locationData);
    // ...
  },
  fail: function(err) {
    // ...
  }
});

原因分析

在 findLocation 方法中, uni.getLocation 的 success 回调使用了普通 function ,导致 this 指向错误,无法正确访问 Vue 实例的 locationData 属性。

修改后代码(正确部分)

javascript 复制代码
uni.getLocation({
  type: 'gcj02',
  success: (res) => {
    const latitude = res.latitude;
    const longitude = res.longitude;
    const location = [];
    location.push(latitude);
    location.push(longitude);
    this.locationData = location; // 这里的this正确指向Vue实例
    console.log(this.locationData);
    // ...
  },
  fail: (err) => {
    // ...
  }
});

本bug是典型的JavaScript中 this 指向问题,通过使用箭头函数可以确保回调函数中的 this 正确指向Vue实例。

相关推荐
qixingchao2 小时前
VUE Pinia 官方首推的数据状态管理库
前端·javascript·vue.js
凌波粒2 小时前
CSS基础详解(2)--Grid网格布局详解
前端·css·css3·html5
飛6792 小时前
Flutter 状态管理深度实战:从零封装轻量级响应式状态管理器,告别 Provider/Bloc 的臃肿与复杂
前端·javascript·flutter
汝生淮南吾在北2 小时前
SpringBoot3+Vue3新闻动态网站
前端·javascript·vue.js·spring boot·毕业设计·毕设
LYFlied2 小时前
Vue Router 监听地址变化的核心逻辑示意
前端·javascript·vue.js·vue router·前端路由·源码理解
web守墓人2 小时前
【前端】rspack和rsbuild的关系
前端
韩曙亮2 小时前
【Web APIs】鼠标经过、离开事件 ( mouseover、mouseout 事件 | mouseenter、mouseleave 事件 )
前端·javascript·web apis·mouseover·mouseout·mouseenter·mouseleave
brzhang2 小时前
MCP A2A Skills 这三个词搞懂了 再去写你的智能体
前端·后端·架构