.vue文件中,方法里面如何获取当前组件的实例

如题,按照官网的步骤制作了个vue的demo,在为组件的某个元素绑定点击事件后,想用this获取当前组件的实例,但是发现获取到的是这样的,请问该如何获取组件的实例?

代码如下:

  <div class="hello">
    <h1>{{ msg }}</h1>
    <h2 @click="doSth">Essential Links</h2>
    <ul>
      <li><a href="https://vuejs.org" target="_blank">Core Docs</a></li>
      <li><a href="https://forum.vuejs.org" target="_blank">Forum</a></li>
      <li><a href="https://chat.vuejs.org" target="_blank">Community Chat</a></li>
      <li><a href="https://twitter.com/vuejs" target="_blank">Twitter</a></li>
      <br/>
      <li><a href="http://vuejs-templates.github.io/webpack/" target="_blank">Docs for This Template</a></li>
    </ul>
  </div>
</template>

<script>
  export default {
    name: 'HelloWorld',
    data () {
      return {
        msg: 'Welcome to Your Vue.js App'
      }
    },
    methods: {
        doSth: (e) => {
            console.log(e, this) //打印出来不是当前组件的实例
        }
    }
  }
</script>

打印出的this截图如下,发现明显不是当前组件的实例:

clipboard.png

阅读 18.2k
2 个回答

methods的定义不要用箭头函数。

箭头函数本身没有this,继承自父级执行的上下文,而且是箭头函数定义时候的其父级执行上下文的this,上面的代码里面doSth和箭头函数是key,value的平级关系,都是在methods里面,所以this指向methods执行的上下文

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题