vue3没有this怎么办?

简介: vue3没有this怎么办?

在vue3中,新的组合式API中没有this,那我们如果需要用到this怎么办?

解决方法:

getCurrentInstance 方法获取当前组件的实例,然后通过ctxproxy 属性获得当前上下文,这样我们就能在setup中使用router和vuex了

import { getCurrentInstance } from "vue";
export default {
  setup() {
      let { proxy } = getCurrentInstance();
      proxy.$axios(...)
      proxy.$router(...)
    }
}

但是

但是,不建议使用,如果要使用router和vuex,推荐这样用:

import { computed } from 'vue'
import { useStore } from 'vuex'
import { useRoute, useRouter } from 'vue-router'
export default {
  setup () {
    const store = useStore()
  const route = useRoute()
    const router = useRouter()
    return {
      // 在 computed 函数中访问 state
      count: computed(() => store.state.count),
      // 在 computed 函数中访问 getter
      double: computed(() => store.getters.double)
    // 使用 mutation
      increment: () => store.commit('increment'),
      // 使用 action
      asyncIncrement: () => store.dispatch('asyncIncrement')
    }
  }
}

大家不要依赖 getCurrentInstance 方法去获取组件实例来完成一些主要功能,否则在项目打包后,一定会报错的。

相关文章
|
4天前
|
JavaScript 网络架构
vue3 Elementplus 动态路由菜单不跳转问题
vue3 Elementplus 动态路由菜单不跳转问题
17 1
|
6天前
|
JavaScript 前端开发 C++
Vue3视图渲染技术(1)
Vue3视图渲染技术(1)
11 0
Vue3视图渲染技术(1)
|
4天前
|
JavaScript 前端开发 API
vue3和vue2的区别
vue3和vue2的区别
|
4天前
|
JavaScript API 开发者
vue3 的生命周期
vue3 的生命周期
|
5天前
Vue3项目 小兔鲜问题总结
Vue3项目 小兔鲜问题总结
16 2
|
5天前
vue3基本指令使用
vue3基本指令使用
11 2
|
6天前
|
JavaScript 前端开发 API
Vue3入门 - vue3相比于vue2的优点,及如何创建Vue3项目
Vue3入门 - vue3相比于vue2的优点,及如何创建Vue3项目
|
6天前
Vue3——tdesign-vue-next如何按需加载动态渲染ICON
如题,在vue3中进行按需加载来动态的渲染icon图标;
9 1
|
14天前
|
JavaScript 前端开发 API
什么是响应式❓Vue2/Vue3中响应式的原理
什么是响应式❓Vue2/Vue3中响应式的原理
22 2
|
14天前
|
资源调度 JavaScript 前端开发
vite+vue3+ts从0到1搭建企业级项目(2)
vite+vue3+ts从0到1搭建企业级项目
28 1