Vue基于TypeScript的一次錯(cuò)誤使用分析

這篇文章給大家介紹Vue基于TypeScript的一次錯(cuò)誤使用分析,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

成都創(chuàng)新互聯(lián)從2013年成立,先為臨潭等服務(wù)建站,臨潭等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為臨潭企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

概述

在使用Vue基于TypeScript開(kāi)發(fā)項(xiàng)目時(shí),使用Element UI的Table來(lái)做列表數(shù)據(jù)的渲染。
在實(shí)際的數(shù)據(jù)中,有一列數(shù)據(jù)存儲(chǔ)的是字典的 code ,這種設(shè)計(jì)對(duì)于后端的模型設(shè)計(jì)來(lái)說(shuō)是沒(méi)有問(wèn)題的,我們的數(shù)據(jù)持久化只需要關(guān)注 code 就可以了。
但是前端顯示的過(guò)程中,只顯示 code 值,對(duì)用戶來(lái)說(shuō)是不友好的。對(duì)于用戶來(lái)講,他們需要的是可讀的數(shù)據(jù),即 code 對(duì)應(yīng)的中文描述。

 

思路

這種問(wèn)題通常會(huì)有兩種解決方案:

  • 后端處理:返回?cái)?shù)據(jù)集時(shí)提前處理     code 值,將其轉(zhuǎn)換成對(duì)應(yīng)的中文描述
  • 前端處理:在渲染表格的過(guò)程中,實(shí)時(shí)的將     code 值轉(zhuǎn)換為對(duì)應(yīng)的中文描述


在本次示例中,我們采用前端處理的方式。

思路

需要處理的列用的是字典值,先從后端將字典數(shù)據(jù)獲取過(guò)來(lái),在渲染數(shù)據(jù)的時(shí)候,直接使用預(yù)加載的字典內(nèi)容對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換。

 

錯(cuò)誤的方案

@Component
export default class DictManage extends Vue {
  modules = [];

 constructor() {
   super();
    this.$store.dispatch('dict/fetchModules').then(res => {
      console.log(res);
      this.modules = res;
    }).catch(err => console.error(err));
 }
 
 public covertModule(code): string {
   const module = this.modules.find(it => it.code === code);
   return module ? module.name : code;
 }
}
 

_在構(gòu)造函數(shù)中將數(shù)據(jù)加載進(jìn)來(lái),可以看到控制臺(tái)有打印字典內(nèi)容。但是在 __covertModul_e 中獲取的 modules 卻讀不到值。

 

正確的方案

對(duì)上面的內(nèi)容進(jìn)行了改造,如下:

@Component
export default class DictManage extends Vue {
 modules: any[] = [];

 created() {
   this.$store
     .dispatch('dict/fetchModules')
     .then(res => {
       this.modules = [...res];
     })
     .catch(err => console.error(err));
 }

 public covertModule(code): string {
   const module = this.modules.find(it => it.code === code);
   return module ? module.name : code;
 }
}
 

將預(yù)加載的處理遷移到 created() 里面, 此時(shí) covertModule 中可以正常的獲取 modules 值,表格渲染正常。

 

分析

在TypeScript下開(kāi)發(fā)的Vue組件,屬性變量modules對(duì)應(yīng)著js下的 data() 中的modules,所以在構(gòu)造函數(shù)中對(duì)modules進(jìn)行賦值處理時(shí),modules還沒(méi)有創(chuàng)建。在covertModule中使用的modules是后來(lái)創(chuàng)建的實(shí)例,與構(gòu)造函數(shù)中的不是同一個(gè),所以獲取到的一直是空。

關(guān)于Vue基于TypeScript的一次錯(cuò)誤使用分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

新聞標(biāo)題:Vue基于TypeScript的一次錯(cuò)誤使用分析
網(wǎng)頁(yè)網(wǎng)址:http://muchs.cn/article4/iepeoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、ChatGPT、軟件開(kāi)發(fā)、關(guān)鍵詞優(yōu)化、定制網(wǎng)站面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司