欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue3中使用this的詳細(xì)教程

 更新時(shí)間:2023年07月10日 16:15:50   作者:PhilipJ0303  
在vue3中新的組合式API中沒(méi)有this,那我們?nèi)绻枰玫絫his怎么辦?下面這篇文章主要給大家介紹了關(guān)于Vue3中使用this的詳細(xì)教程,需要的朋友可以參考下

Vue3使用this

Vue2升級(jí)到Vue3,有很大的改變,其中最明顯的就是以前的this,在新版本中無(wú)法使用了,這是為什么呢?

官方是這樣說(shuō)的:在 setup() 內(nèi)部,this 不會(huì)是該活躍實(shí)例的引用(即不指向vue實(shí)例),因?yàn)?nbsp;setup() 是在解析其它組件選項(xiàng)之前被調(diào)用的,所以 setup() 內(nèi)部的 this 的行為與其它選項(xiàng)中的 this 完全不同。這在和其它選項(xiàng)式 API 一起使用 setup() 時(shí)可能會(huì)導(dǎo)致混淆。

因此setup函數(shù)中不能使用this。所以Vue為了避免我們錯(cuò)誤的使用,直接將setup函數(shù)中的this修改成了 undefined

所以想要在Vue3中使用this, Vue為我們提供了getCurrentInstance()方法,這個(gè)方法返回了ctx和proxy。

具體使用如下:

<script setup>
    import {getCurrentInstance} from '@vue/runtime-core'
    const currentInstance = ref()
    onMounted(() => {
        /**
         * 此處這樣使用時(shí)因?yàn)閂ue3不同于Vue2,在 Vue3的setup中我們是無(wú)法訪問(wèn)到this的,所以我們需要借助一個(gè)方法,
         * 那就是getCurrentInstance,該方法返回了當(dāng)前的實(shí)例對(duì)象
         *
         * 注意!?。。。?
         * 不要把該函數(shù)當(dāng)作是optionsApi中來(lái)獲取 this 使用。
         * 該方法只在 setup、生命周期函數(shù)中有效,在方法中是無(wú)效的
         * */
        currentInstance.value = getCurrentInstance()
    });
</script>

這樣我們就可以借助currentInstance 來(lái)完成在Vue2中this的使用場(chǎng)景了

補(bǔ)充:Vue3.0中this的替代方法

  • 在vue3中,新的組合式API中沒(méi)有this,我們可以通過(guò)以下方法替代this
  • setup 在生命周期 beforecreate 和 created 前執(zhí)行,此時(shí) vue 對(duì)象還未創(chuàng)建,所以我們無(wú)法使用 this

方法一

getCurrentInstance() 方法,獲取當(dāng)前組件的實(shí)例,通過(guò) ctx 或 proxy 屬性獲得當(dāng)前上下文,從而就能在setup中使用router和vuex

import { getCurrentInstance } from "vue";
export default {
	setup() {
    	let { proxy } = getCurrentInstance();
    	console.log(proxy)
    }
}

getCurrentInstance 方法去獲取組件實(shí)例來(lái)完成一些主要功能,在項(xiàng)目打包后,會(huì)報(bào)錯(cuò)(不推薦使用)

方法二(推薦使用)

import { useStore } from 'vuex'
import { useRoute, useRouter } from 'vue-router'
export default {
  setup () {
    const store = useStore()
	const route = useRoute()
    const router = useRouter()
    return {
      // 訪問(wèn) state  函數(shù)
      count: computed(() => store.state.count),
      // 訪問(wèn) getter函數(shù)
      double: computed(() => store.getters.double)
	  // mutation
      increment: () => store.commit('increment'),
      // 使用 action
      asyncIncrement: () => store.dispatch('asyncIncrement')
    }
  }
}

總結(jié)

到此這篇關(guān)于Vue3中使用this的文章就介紹到這了,更多相關(guān)Vue3使用this內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 自定義input組件如何實(shí)現(xiàn)拖拽文件上傳

    自定義input組件如何實(shí)現(xiàn)拖拽文件上傳

    這篇文章主要介紹了自定義input組件如何實(shí)現(xiàn)拖拽文件上傳問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • vue使用echarts實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)的示例詳解

    vue使用echarts實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)的示例詳解

    這篇文章主要為大家詳細(xì)介紹了vue如何使用echarts實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù),文中的示例講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • Vue路由傳參頁(yè)面刷新后參數(shù)丟失原因和解決辦法

    Vue路由傳參頁(yè)面刷新后參數(shù)丟失原因和解決辦法

    這幾天在開(kāi)發(fā)中遇見(jiàn)的一個(gè)關(guān)于路由傳參后,頁(yè)面刷新數(shù)據(jù)丟失的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于Vue路由傳參頁(yè)面刷新后參數(shù)丟失原因和解決辦法,需要的朋友可以參考下
    2022-12-12
  • vue路由中前進(jìn)后退的一些事兒

    vue路由中前進(jìn)后退的一些事兒

    這篇文章主要給大家介紹了關(guān)于vue路由中前進(jìn)后退的一些事兒,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue路由具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Vue路由應(yīng)用詳細(xì)講解

    Vue路由應(yīng)用詳細(xì)講解

    路由的本質(zhì)就是一種對(duì)應(yīng)關(guān)系,根據(jù)不同的URL請(qǐng)求,返回對(duì)應(yīng)不同的資源。那么url地址和真實(shí)的資源之間就有一種對(duì)應(yīng)的關(guān)系,就是路由
    2022-11-11
  • Vue2.4+新增屬性.sync、$attrs、$listeners的具體使用

    Vue2.4+新增屬性.sync、$attrs、$listeners的具體使用

    這篇文章主要介紹了Vue2.4+新增屬性.sync、$attrs、$listeners的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • element table多層嵌套顯示的實(shí)踐

    element table多層嵌套顯示的實(shí)踐

    本文主要介紹了element table多層嵌套顯示的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Vue引入echarts方法與使用介紹

    Vue引入echarts方法與使用介紹

    Echarts,它是一個(gè)與框架無(wú)關(guān)的?JS?圖表庫(kù),但是它基于Js,這樣很多框架都能使用它,例如Vue,估計(jì)IONIC也能用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Vue配置marked鏈接添加target=

    Vue配置marked鏈接添加target="_blank"的方法

    這篇文章主要介紹了Vue配置marked鏈接添加target="_blank"的方法,文中給大家提到了vue實(shí)現(xiàn)類似target="_blank"打開(kāi)新窗口的代碼,感興趣的朋友參考下吧
    2019-07-07
  • vue parseHTML函數(shù)源碼解析 AST預(yù)備知識(shí)

    vue parseHTML函數(shù)源碼解析 AST預(yù)備知識(shí)

    這篇文章主要為大家介紹了vue parseHTML函數(shù)源碼解析 AST預(yù)備知識(shí)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07

最新評(píng)論