日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Vue使用技巧和項(xiàng)目中遇到的問題

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

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比洛南網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式洛南網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋洛南地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。

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

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

請(qǐng)參考Vue文檔全局鉤子和組件鉤子

2. 路由懶加載寫法:

     
 
 
 
  1. // 我所采用的方法,個(gè)人感覺比較簡潔一些,少了一步引入賦值。
  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)驗(yàn)?zāi)昵岸碎_發(fā)人員
  17. //幫助突破技術(shù)瓶頸,提升思維能力

3,路由的項(xiàng)目啟動(dòng)頁和404頁面

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

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

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

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

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

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

這個(gè)地方大家的默認(rèn)方法肯定是:

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

其實(shí)這個(gè)地方我們可以用箭頭函數(shù),因?yàn)榧^函數(shù)會(huì)改變this的指向,而指向的剛好是自己的父級(jí)this,所以我們可以這樣用:

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

這樣我們的this就是指向我們的vue實(shí)例了。

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

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

上代碼:

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

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

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

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

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

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

選項(xiàng):deep

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

選項(xiàng):immediate

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

     
 
 
 
  1. watch: {
  2.  obj: {
  3.   handler(val, oldVal) {
  4.   console.log('屬性發(fā)生變化觸發(fā)這個(gè)回調(diào)',val, oldVal);
  5.   },
  6.   deep: true // 監(jiān)聽這個(gè)對(duì)象中的每一個(gè)屬性變化
  7.  },
  8.  step: { // 屬性
  9.   //watch
  10.   handler(val, oldVal) {
  11.   console.log("默認(rèn)觸發(fā)一次", val, oldVal);
  12.   },
  13.   immediate: true // 默認(rèn)觸發(fā)一次
  14.  },
  15.  },

當(dāng)前文章:Vue使用技巧和項(xiàng)目中遇到的問題
標(biāo)題路徑:http://m.5511xx.com/article/djpjeoc.html