自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Vue使用技巧和項目中遇到的問題

新聞 前端
這里給大家分享一下vue使用技巧和項目中遇到的問題,希望對大家有用處。

這里給大家分享一下Vue中的一些技巧,希望對大家有用處。(話不多說上代碼)

1. Vue路由攔截瀏覽器后退實現(xiàn)表單保存類似需求(為了防止用戶突然離開,沒有保存已輸入的信息。)

  1. //在路由組件中: 
  2. mounted(){ 
  3. }, 
  4. beforeRouteLeave (to, from, next) { 
  5.  if(用戶已經(jīng)輸入信息){ 
  6.  //出現(xiàn)彈窗提醒保存表單,或者自動后臺為其保存 
  7.    
  8.  }else
  9.  next(true);//用戶離開 
  10.  } 

請參考Vue文檔全局鉤子和組件鉤子

2. 路由懶加載寫法:

  1. // 我所采用的方法,個人感覺比較簡潔一些,少了一步引入賦值。 
  2. const router = new VueRouter({ 
  3.  routes: [ 
  4.  path: '/app'
  5.  component: () => import('./app'), // 引入組件 
  6.  ] 
  7. }) 
  8. // Vue路由文檔的寫法: 
  9. const app = () => import('./app.vue'// 引入組件 
  10. const router = new VueRouter({ 
  11.  routes: [ 
  12.  { path: '/app', component: app } 
  13.  ] 
  14. }) 
  15. //前端全棧學(xué)習(xí)交流圈:866109386 
  16. //面向1-3經(jīng)驗?zāi)昵岸碎_發(fā)人員 
  17. //幫助突破技術(shù)瓶頸,提升思維能力 

3,路由的項目啟動頁和404頁面

一般項目都會設(shè)置這個,如果默認進入地址會跳到login頁面,如果你輸入的是一個沒有用的路由或者是空路由會跳轉(zhuǎn)到notFind頁面(你自己設(shè)置的404頁面)

  1. export default new Router({ 
  2.  routes: [ 
  3.  { 
  4.   path: '/'// 項目啟動頁 
  5.   redirect:'/login' // 重定向到下方聲明的路由  
  6.  }, 
  7.  { 
  8.   path: '*'// 404 頁面  
  9.   component: () => import('./notFind'// 或者使用component也可以的 
  10.  }, 
  11.  ] 
  12. }) 

4. setInterval路由跳轉(zhuǎn)繼續(xù)運行并沒有銷毀問題

  1. beforeDestroy(){ 
  2.   //我通常是把setInterval()定時器賦值給this實例,然后就可以像下面這么暫停。 
  3.  clearInterval(this.intervalid); 
  4. }, 

beforeDestroy方法是生命周期里組件銷毀前執(zhí)行的鉤子函數(shù),在離開的時候會觸發(fā)這個方法,這個方法在其他的地方也會有妙用,希望大家可以去了解一下。

5,setTimeout/setInterval this指向改變,無法用this訪問VUe實例

這個地方大家的默認方法肯定是:

  1. //使用變量訪問this實例 
  2. let self=this
  3.  setTimeout(function () {  
  4.   console.log(self);//使用self變量訪問this實例 
  5.  },1000); 

其實這個地方我們可以用箭頭函數(shù),因為箭頭函數(shù)會改變this的指向,而指向的剛好是自己的父級this,所以我們可以這樣用:

  1. //箭頭函數(shù)訪問this實例 因為箭頭函數(shù)本身沒有綁定this 
  2.  setTimeout(() => {  
  3.  console.log(this); 
  4. }, 500); 

這樣我們的this就是指向我們的vue實例了。

6,Vue 數(shù)組/對象更新 視圖不更新

方法一:直接使用最簡單也是最有效的方法,深拷貝對象或者數(shù)組,視圖會進行更新,不過會有一個缺點,深拷貝后的數(shù)組或者對象不是原來的那個數(shù)組或者對象,是你現(xiàn)在改變了之后的值。

上代碼:

你的對象或者數(shù)組=JSON.parse(JSON.stringify(你的對象或者數(shù)組))
先進行轉(zhuǎn)字符串,再轉(zhuǎn)回對象,這個就進行了一個拷貝的過程,會觸發(fā)視圖的改變,同時也進行了一個數(shù)組的替換,有利有弊。

方法二:this.$set(你要改變的數(shù)組/對象,你要改變的位置/key,你要改成什么value)

  1. this.$set(this.arr, 0, "OBKoro1"); // 改變數(shù)組 
  2. this.$set(this.obj, "c""OBKoro1"); // 改變對象 

這個是vue專門為改變不了數(shù)組設(shè)定的一個方法,使用也很簡單(如果還是不懂請參考vue文檔)

7,深度watch與watch立即觸發(fā)回調(diào)

watch很多人都在用,但是這watch中的這兩個選項deep、immediate,或許不是很多人都知道,我猜。

選項:deep

在選項參數(shù)中指定 deep: true,可以監(jiān)聽對象中屬性的變化。

選項:immediate

在選項參數(shù)中指定 immediate: true, 將立即以表達式的當(dāng)前值觸發(fā)回調(diào),也就是默認觸發(fā)一次。

  1. watch: { 
  2.  obj: { 
  3.   handler(val, oldVal) { 
  4.   console.log('屬性發(fā)生變化觸發(fā)這個回調(diào)',val, oldVal); 
  5.   }, 
  6.   deep: true // 監(jiān)聽這個對象中的每一個屬性變化 
  7.  }, 
  8.  step: { // 屬性 
  9.   //watch 
  10.   handler(val, oldVal) { 
  11.   console.log("默認觸發(fā)一次", val, oldVal); 
  12.   }, 
  13.   immediate: true // 默認觸發(fā)一次 
  14.  }, 
  15.  }, 
責(zé)任編輯:張燕妮 來源: 簡書
相關(guān)推薦

2018-05-02 09:18:17

Linux技巧嵌入式

2020-09-27 10:35:22

Vue前端代碼

2021-05-06 09:06:12

Vue Router組件視圖

2024-09-09 05:30:00

數(shù)據(jù)庫Spring

2024-09-12 15:36:57

2022-03-26 13:31:18

項目node變量

2020-12-15 12:43:53

Nodenode應(yīng)用NodeJS

2009-06-24 17:34:58

使用JSF的經(jīng)驗

2023-09-14 08:46:50

ReactVue

2022-11-18 07:54:02

Go中間件項目

2020-04-24 20:05:16

VueAxios前端

2023-12-21 08:51:37

防抖節(jié)流Vue.js

2020-10-27 14:15:42

SpringBoot

2022-09-30 09:04:29

開源開發(fā)

2021-03-02 09:45:07

java循環(huán)依賴開發(fā)技術(shù)

2010-08-31 16:01:18

CSS

2011-07-08 08:37:05

軟件開發(fā)

2020-07-22 15:15:28

Vue前端代碼

2021-08-04 08:27:00

VueReact自動化部署

2009-06-29 15:51:48

Spring容器
點贊
收藏

51CTO技術(shù)棧公眾號