欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Angular路由復用策略的示例分析

這篇文章主要介紹了Angular路由復用策略的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新新互聯(lián),憑借十余年的網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計經(jīng)驗,本著真心·誠心服務(wù)的企業(yè)理念服務(wù)于成都中小企業(yè)設(shè)計網(wǎng)站有1000+案例。做網(wǎng)站建設(shè),選創(chuàng)新互聯(lián)。

一、引言

路由在執(zhí)行過程中對組件無狀態(tài)操作,即路由離退時組件狀態(tài)也一并被刪除;當然在絕大多數(shù)場景下這是合理的。

但有時一些特殊需求會讓人半死亡狀態(tài),當然這一切都是為了用戶體驗;一種非常常見場景,在移動端中用戶通過關(guān)鍵詞搜索商品,而死不死的這樣的列表通常都會是自動下一頁動作,此時用戶好不容易滾動到第二頁并找到想要看的商品時,路由至商品詳情頁,然后一個后退……用戶懵逼了。

Angular路由與組件一開始就透過 RouterModule.forRoot 形成一種關(guān)系,當路由命中時利用ComponentFactoryResolver 構(gòu)建組件,這是路由的本質(zhì)。

而每一個路由并不一定是一次性消費,Angular 利用 RouteReuseStrategy 貫穿路由狀態(tài)并決定構(gòu)建組件的方式;當然默認情況下(DefaultRouteReuseStrategy)像開頭說的,一切都不進行任何處理。

RouteReuseStrategy 從2就已經(jīng)是實驗性,當前依然如此,這么久應(yīng)該是可信任。

二、RouteReuseStrategy

RouteReuseStrategy 我稱它為:路由復用策略;并不復雜,提供了幾種辦法通俗易懂的方法:

  • shouldDetach 是否允許復用路由

  • store 當路由離開時會觸發(fā),存儲路由

  • shouldAttach 是否允許還原路由

  • retrieve 獲取存儲路由

  • shouldReuseRoute 進入路由觸發(fā),是否同一路由時復用路由

這看起來就像是一個時間軸關(guān)系,用一種白話文像是這樣:把路由 /list 設(shè)置為允許復用(shouldDetach),然后將路由快照存在 store 當中;當 shouldReuseRoute 成立時即:再次遇到 /list 路由后表示需要復用路由,先判斷 shouldAttach 是否允許還原,最后從 retrieve 拿到路由快照并構(gòu)建組件。

當理解這一原理時,假如我們拿開頭搜索列表返回的問題就變得非常容易解決。

三、一個示例

誠如上面說明的,只需要實現(xiàn) RouteReuseStrategy 接口即可自定義一個路由利用策略。

1、創(chuàng)建策略

import {RouteReuseStrategy, DefaultUrlSerializer, ActivatedRouteSnapshot, DetachedRouteHandle} from '@angular/router';

export class SimpleReuseStrategy implements RouteReuseStrategy {

  _cacheRouters: { [key: string]: any } = {};

  shouldDetach(route: ActivatedRouteSnapshot): boolean {
    return true;
  }
  store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {
    this._cacheRouters[route.routeConfig.path] = {
      snapshot: route,
      handle: handle
    };
  }
  shouldAttach(route: ActivatedRouteSnapshot): boolean {
    return !!this._cacheRouters[route.routeConfig.path];
  }
  retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {
    return this._cacheRouters[route.routeConfig.path].handle;
  }
  shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {
    return future.routeConfig === curr.routeConfig;
  }
}

定義一個 _cacheRouters 用于緩存數(shù)據(jù)(路由快照及當前組件實例對象)。

  • shouldDetach 直接返回 true 表示對所有路由允許復用

  • store 當路由離開時會觸發(fā)。按path作為key存儲路由快照&組件當前實例對象;path等同RouterModule.forRoot中的配置。

  • shouldAttach 若 path 在緩存中有的都認為允許還原路由

  • retrieve 從緩存中獲取快照,若無則返回null

  • shouldReuseRoute 進入路由觸發(fā),判斷是否同一路由

2、注冊

最后將策略注冊到模塊當中:

providers: [
 { provide: RouteReuseStrategy, useClass: SimpleReuseStrategy }
]

假設(shè)我們有這么一個路由配置:

RouterModule.forRoot([
 { path: 'search', component: SearchComponent },
 { path: 'edit/:id', component: EditComponent }
])

搜索組件用于搜索動作,并在根據(jù)搜索結(jié)果跳轉(zhuǎn)至編輯頁,保存后又回到最后搜索結(jié)果的狀態(tài)(這部分代碼我就不貼有興趣見 plnkr)。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Angular路由復用策略的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!

本文名稱:Angular路由復用策略的示例分析
瀏覽地址:http://www.aaarwkj.com/article46/ijhceg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃虛擬主機、服務(wù)器托管、手機網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、App開發(fā)

廣告

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

h5響應(yīng)式網(wǎng)站建設(shè)
国产精品又大又黑又长又粗| 亚洲全乱码精品一区二区| 亚洲小说欧美激情另类| 亚洲国产精品自拍第一页| 久久免费观看性生活片| 亚洲一区二区精品自拍| 亚洲精品成人综合色在线| 日韩av在线播放亚洲天堂| 爱爱网爱综合日日干夜夜操| 精品国产亚洲av剧情| 成人又黄又爽大片在线观看| 囗交囗爆吞精在线视频| 日本又色又爽又黄又高潮| 日本午夜视频在线观看| 欧美三级伦理片免费观看| 一个人看的视频天堂色| 欧美男女精品一区二区三区| 少妇性生活视频免费观看| 国产精品伦一区二区三级| 亚洲国产精品成人久久蜜臀| 2020亚洲欧美日韩在线| 国产午夜18久久久| 久久精品人妻麻豆尤物| 九九热这里只有免费精品| 亚洲欧美综合一区二区三区| 成人一区二区三区乱码| 国产又大又黄又粗的黄色| 在线观看不卡的黄色地址| 羞涩插射视频网站在线观看| 日本激情人妻一区二区| 亚洲精品成人中文字幕| 五月婷婷丁香综合中文字幕| 囗交囗爆吞精在线视频| 国产一区二区三区婷婷| 精品人妻少妇一区二区三| 日本av成人激情视频| 四虎国产精品久久久久久网址| 久久99热婷婷精品一区| 丝袜在线美腿视频网站| 色悠悠色综合视频在线| 亚洲av成人精品网站推荐|