前段時間在項目開發中,因爲項目中有兩級菜單且在第二級菜單頁面中操做的過程當中會進入第三級的操做頁面。爲了友好的對用戶指引,讓用戶有效的理解本身所處的頁面層級。加入了麪包屑功能。對面包屑數據存儲方案作了分析。vue
在這裏引用ant.design的圖片。頁面結構大概如此。有一級導航、二級導航。在二級導航中能夠經過操做進入不在導航中的頁面。react
麪包屑導航是在用戶界面中的一種導航輔助。它是用戶用來在一個在程序或文件中肯定和轉移他們位置。vue-router
天貓商城麪包屑 vuex
第一條特性決定了,它必須做爲全局數據來存儲。全局的數據存儲方式有不少,單頁面常見的有全局變量(window)、狀態管理模器(vuex,redux)、sessionStorage、locationStorage。redux
第二條特性決定了全局變量、狀態管理模器不適合存儲這類數據,由於它們刷新後就會消失,除非從新添加。session
第三條特性決定了,不合適去使用localStrage去存儲它,由於在多個標籤頁下localStorage是共享的。雖然也有辦法能夠在localStrage區分標籤頁(經過設置標籤頁id來肯定標籤頁),但成本太高。react-router
根據以上的分析,總結了兩種存儲方案。router
由於sessionStorage並不違背面包屑導航數據存儲的三個特性所以能夠將其存儲在sessionStorage。cdn
進入應用 => 建立面包屑 切換頁面 => 修改麪包屑 退出應用 => 卸載麪包屑blog
因爲麪包屑的改變發生在頁面(視圖)切換的時刻。而在存在路由的系統中,頁面(視圖)都是與路由一一對應。所以路由改變就意味着麪包屑的改變。能夠將路由數據和麪包屑數據作關聯。路由改變時裝載其對應的麪包屑數據。
路由變化 => 修改麪包屑