vue 面包屑 路由
时间: 2023-08-21 12:16:42 浏览: 102
回答: 在Vue中实现面包屑的路由可以通过以下步骤进行。首先,在router配置中加入meta(元数据)对象,用于存放自定义的内容,比如面包屑的标题变量。接着,在需要使用面包屑的页面中使用watch监听route的变化,通过this.$route.matched获取到匹配当前路由的所有片段的配置参数对象,并将其存储在一个数组中。然后,使用v-for遍历数组中的元素,将元素的meta.title作为router-link的标题信息,并将list.path作为to属性,将面包屑信息动态渲染到页面上。最后,在页面中获取meta的数据,可以通过this.$route.meta来获取,并将其赋值给需要的地方。例如,在el-breadcrumb组件中,可以使用{{title}}来显示面包屑的标题。
相关问题
路由守卫vue 面包屑
在Vue中,路由守卫是一种用于监控和控制路由导航的机制。它可以在路由切换之前、之后或者在路由组件被复用之前触发一些特定的逻辑。其中,beforeEach是一种常见的路由守卫,它会在每次路由切换之前被调用,允许我们执行一些预处理逻辑。
在上述引用中,作者在router包下的index.js中添加了一个路由守卫。这个路由守卫的作用是,在路由切换之前,将当前路由的名称存储到localStorage中,并触发store的数据更新。具体的代码如下所示:
```javascript
router.beforeEach((to, from, next) => {
localStorage.setItem("currentPathName", to.name); //设置当前路由名称
index.commit("setPath"); //触发store的数据更新
next(); //放行路由
});
```
这段代码中,通过调用localStorage.setItem方法将to.name(即当前路由的名称)存储到localStorage的currentPathName键中。接着,通过调用index.commit方法触发store中的setPath方法来更新相应的数据。最后,通过调用next方法放行路由,使路由切换继续进行。
关于面包屑,可以根据动态的路由值来生成动态的面包屑。在上述引用的例子中,可以看到路由配置中的每个路由都有一个name属性,该属性可以用来做页签。通过在路由配置中设置name属性,可以方便地生成相应的面包屑。在这个例子中,每个路由都有一个对应的name属性,比如"首页"对应的name为"home","用户管理"对应的name为"user"。这样,在路由切换时,可以根据当前路由的name值来动态生成对应的面包屑。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [【项目实战经验】vue的动态路由实现对应面包屑动态值显示](https://blog.csdn.net/qq_36131502/article/details/106788807)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [vue面包屑导航获取路由参数](https://blog.csdn.net/weixin_50622066/article/details/124573334)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
vue 面包屑及面包屑国际化的实现代码
面包屑(Breadcrumb)是一种常见的导航组件,用于展示当前页面所处的位置。在 Vue 中,可以通过路由和组件结合实现面包屑。
首先,在路由配置中为每个路由添加一个 `meta` 属性,用于存储该路由对应的面包屑信息,例如:
```js
const routes = [
{
path: '/home',
name: 'home',
component: Home,
meta: {
breadcrumb: [
{name: 'Home', link: '/home'},
]
}
},
{
path: '/about',
name: 'about',
component: About,
meta: {
breadcrumb: [
{name: 'Home', link: '/home'},
{name: 'About', link: '/about'}
]
}
},
// ...
]
```
接着,在组件中使用 `$route` 对象获取当前路由信息,并根据 `meta` 中的面包屑信息渲染面包屑组件,例如:
```vue
<template>
<div class="breadcrumb">
<span v-for="(item, index) in breadcrumb" :key="index">
<router-link :to="item.link">{{ $t(item.name) }}</router-link>
<span v-if="index !== breadcrumb.length - 1">/</span>
</span>
</div>
</template>
<script>
export default {
computed: {
breadcrumb() {
const breadcrumb = []
let route = this.$route
while (route) {
if (route.meta && route.meta.breadcrumb) {
breadcrumb.unshift(...route.meta.breadcrumb)
}
route = route.parent
}
return breadcrumb
}
}
}
</script>
```
这里使用了 `$t` 方法来实现面包屑的国际化,需要在 Vue 的实例中配置对应的语言包,例如:
```js
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import en from './locales/en.json'
import zh from './locales/zh.json'
Vue.use(VueI18n)
const i18n = new VueI18n({
locale: 'en',
messages: {
en,
zh,
},
})
new Vue({
i18n,
router,
render: h => h(App),
}).$mount('#app')
```
其中 `en.json` 和 `zh.json` 分别为英文和中文语言包,例如:
```json
{
"Home": "Home",
"About": "About"
}
```
阅读全文