最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決Vue+ts里面this.$store問題

 更新時間:2022年03月30日 14:15:18   作者:Vip_wk  
這篇文章主要介紹了解決Vue+ts里面this.$store問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Vue+ts里this.$store問題

vuex里面我調(diào)用this.$store訪問倉庫state時,調(diào)用失敗報錯

解決辦法

(this as any).$store?

Vue實踐ts中的一些常見錯誤

mixin報錯

import { Component, Prop, Vue ,Mixins} from 'vue-property-decorator'
import httpminix from '../mixin/httpMixin'
@Component({
? mixins:[httpminix]
})
export default class HelloWorld extends Vue {
? public async getUser() : Promise<void> {
? ? const r = await this.apiGet('/show') //HelloWorld上沒有apiGet方法
? ? this.firstName = JSON.stringify(r.data)
? }
}

解決方案

import { Component, Prop, Vue ,Mixins} from 'vue-property-decorator'
import httpminix from '../mixin/httpMixin'
@Component
// 這里從繼承Vue改成繼承Minix函數(shù),這樣就有提示了
export default class HelloWorld extends Mixins(httpminix) {
? public async getUser() : Promise<void> {
? ? const r = await this.apiGet('/show')
? ? this.firstName = JSON.stringify(r.data)
? }
? public mounted() {
? ?this.getUser()
? }
}

擴展屬性報錯

我們現(xiàn)在代碼里寫一段window,然后用編輯器跳轉(zhuǎn)到其.d.ts文件中去

// 定義一個全局變量 window 類型為Window
declare var window: Window;
// 截取Window接口
interface Window

由于這個接口為全局接口,所以我們可以聲明一個同名全局全局接口,TS會幫我們合并

interface Window {
? // 也可以添加?
? // 字符串簽名 可以允許添加未知名稱屬性
? [p: string]: any
}
// 這樣就可以使用如下代碼不報錯
import axios from 'axios'
window.axios = axios

然后我們發(fā)現(xiàn)

window.axios //這里沒有屬性提示

然后我想把這個axios具體類型掛載上去,當(dāng)然一想,像下面這樣做

import {AxiosStatic} from 'axios'
interface Window {
? axios: AxiosStatic
}

然后發(fā)現(xiàn)報錯了,window上沒有axios這個屬性,就很疑惑,嘗試改回去,仍然報錯

import {AxiosStatic} from 'axios'
interface Window {
? [p: string]: any
}

我就想這兩個區(qū)別就是導(dǎo)入了一個類型,突然想到

TS中沒有import和export的TS文件變量被視為全局

然后回去一看原本W(wǎng)indow的定義

// 注意lib.dom.d.ts這里沒有export
interface Window

好的,想通了,就是因為使用import導(dǎo)入了一個類型,導(dǎo)致我自定義Window接口變成了模塊內(nèi)的,這時候的解決方案當(dāng)然是看看內(nèi)置語法有沒有能顯示定義全局性的變量

// bingo ?此時window.axios有提示啦
import { AxiosStatic } from "axios";
declare global {
? interface Window {
? ? ? axios: AxiosStatic
? }
}
export { };

TS為我們在模塊定義全局提供了一個方式,用于解決在模塊中擴展全局

declare global {
? // your type code
}

擴展Vue屬性例子

import Vue from 'vue'
declare module "vue/types/vue" {
? interface Vue {
? ? $message: string;
? }
}

在組件類中可以這樣訪問

this.$messgae //這里有屬性提示

總結(jié):需要擴展一個第三方聲明文件,需要確定其命名空間以及擴展變量實現(xiàn)的接口結(jié)構(gòu),然后復(fù)制該接口寫一次自己的類型即可

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • @vue/cli4.x版本的vue.config.js常用配置方式

    @vue/cli4.x版本的vue.config.js常用配置方式

    這篇文章主要介紹了@vue/cli4.x版本的vue.config.js常用配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 基于vue實現(xiàn)頁面滾動加載的示例詳解

    基于vue實現(xiàn)頁面滾動加載的示例詳解

    頁面內(nèi)容太多會導(dǎo)致加載速度過慢,這時可考慮使用滾動加載即還沒有出現(xiàn)在可視范圍內(nèi)的內(nèi)容塊先不加載,出現(xiàn)后再加載,所以本文給大家介紹了基于vue實現(xiàn)頁面滾動加載的示例,需要的朋友可以參考下
    2024-01-01
  • Vue使用iframe實現(xiàn)瀏覽器打印兼容性優(yōu)化

    Vue使用iframe實現(xiàn)瀏覽器打印兼容性優(yōu)化

    在前端開發(fā)中,打印功能是一個常見的需求,但不同瀏覽器對打印樣式的支持差異較大,本文我們來看看Vue如何使用iframe實現(xiàn)瀏覽器打印兼容性優(yōu)化吧
    2025-04-04
  • 詳談Object.defineProperty 及實現(xiàn)數(shù)據(jù)雙向綁定

    詳談Object.defineProperty 及實現(xiàn)數(shù)據(jù)雙向綁定

    這篇文章主要介紹了詳談Object.defineProperty 及實現(xiàn)數(shù)據(jù)雙向綁定,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue刷新頁面后params參數(shù)丟失的原因和解決方法

    vue刷新頁面后params參數(shù)丟失的原因和解決方法

    這篇文章主要給大家介紹了vue刷新頁面后params參數(shù)丟失的原因和解決方法,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-12-12
  • 解決axios:"timeout of 5000ms exceeded"超時的問題

    解決axios:"timeout of 5000ms exceeded"

    這篇文章主要介紹了解決axios:"timeout of 5000ms exceeded"超時的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • van-dialog 組件調(diào)用報錯的解決

    van-dialog 組件調(diào)用報錯的解決

    這篇文章主要介紹了van-dialog 組件調(diào)用報錯的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Vue3+elementPlus中 樹形控件封裝的實現(xiàn)

    Vue3+elementPlus中 樹形控件封裝的實現(xiàn)

    本文主要介紹了Vue3+elementPlus中 樹形控件封裝的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • Vue ElementUi同時校驗多個表單(巧用new promise)

    Vue ElementUi同時校驗多個表單(巧用new promise)

    這篇文章主要介紹了巧用new promise實現(xiàn)Vue ElementUi同時校驗多個表單功能,實現(xiàn)的方法有很多種,本文給大家?guī)淼氖且环N比較完美的方案,需要的朋友可以參考下
    2018-06-06
  • vue中created、watch和computed的執(zhí)行順序詳解

    vue中created、watch和computed的執(zhí)行順序詳解

    由于vue的雙向數(shù)據(jù)綁定,自動更新數(shù)據(jù)的機制,在數(shù)據(jù)變化后,對此數(shù)據(jù)依賴?的所有數(shù)據(jù),watch事件都會被更新、觸發(fā),下面這篇文章主要給大家介紹了關(guān)于vue中created、watch和computed的執(zhí)行順序,需要的朋友可以參考下
    2022-11-11

最新評論

新源县| 托克托县| 格尔木市| 阿瓦提县| 资兴市| 安溪县| 永兴县| 山西省| 晋城| 临清市| 庆云县| 齐河县| 永城市| 舟山市| 望江县| 丹阳市| 工布江达县| 安塞县| 曲松县| 肇庆市| 霸州市| 营山县| 昆山市| 北流市| 和龙市| 榆林市| 齐河县| 清水县| 阳城县| 新郑市| 越西县| 怀柔区| 萝北县| 淄博市| 克拉玛依市| 招远市| 荔波县| 大庆市| 青浦区| 偃师市| 赤壁市|