关于vue的<router-view>

本文探讨Vue中<router-view>组件的使用方式及路由配置对父页面与子页面显示的影响。阐述了在不同路由配置下,如何通过<router-view>实现子页面的正确加载和显示,以及<router-link>的跳转效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于它跳转的基准不太清除,网上也没有很好的解释。

根据实验暂得出:如果当前父页面的.vue的路径和子页面的.vue路径已经写在路由里了,那么

1.路由里未redirect。页面显示父页面,不显示子页面。但如果父页面后续有路由跳转,就会在<router-view>里显示子页面。(可把<router-view>看作<div>)

2.路由里已经redirect到子页面了。页面显示父页面,<router-view>里显示子页面。父页面后续有路由跳转,会在<router-view>里显示子页面。

如果父页面未写在路由里(如App.vue)那使用<router-view>就会跳转到你设置的默认路由,即设置了path: '/',的路径。

 

代码实例如下。

solve.vue里使用<router-view>

<template>
    <div>
        <div>
             <router-link to="/solve/contain1">a</router-link>路由跳转
        </div>父页面
        <router-view></router-view>子页面
    </div>
</template>

情况1  router.js 

{
  path: '/solve',父页面
  component: Solve,
  name:'solve',
  children: [{
    path: '/solve/contain1',子页面
    component: Solvecon1,
    name:'contain1',
  }
运行后<div>里显示父页面,<router-view>里不显示子页面,但<router-link to>跳转的界面会显示在<router-view>里

情况2  router.js 

{
  path: '/solve',
  component: Solve,
  name:'solve',
  redirect: '/solve/contain1'
  children: [{
    path: '/solve/contain1',
    component: Solvecon1,
    name:'contain1',
  }

运行后<div>里显示父页面,<router-view>里显示子页面,<router-link to>跳转的界面会显示在<router-view>里

这样,通过<router-view>就可以实现类似a标签的target效果。

### Vue3 中 `<router-view>` 的使用方法 `<router-view>` 是 Vue Router 提供的一个功能性组件,用于动态加载与当前路由匹配的视图组件。它会根据 `route.path` 渲染对应的组件[^2]。 #### 基本语法 在模板中可以直接使用 `<router-view>` 标签来定义视图区域: ```html <template> <div id="app"> <!-- 路由出口 --> <router-view></router-view> </div> </template> ``` #### 配合 Vue Router 使用 为了使 `<router-view>` 正常工作,需要先配置好 Vue Router 并将其注入到应用实例中。以下是完整的设置流程: 1. **安装 Vue Router** 如果尚未安装 Vue Router,则可以通过 npm 安装: ```bash npm install vue-router@next --save ``` 2. **创建路由文件** 创建一个名为 `router.js` 或类似的文件,定义路由规则: ```javascript import { createRouter, createWebHistory } from 'vue-router'; import Home from './views/Home.vue'; import About from './views/About.vue'; const routes = [ { path: '/', component: Home }, { path: '/about', component: About } ]; const router = createRouter({ history: createWebHistory(), routes, }); export default router; ``` 3. **引入并挂载路由器** 在主入口文件(如 `main.js`)中引入并挂载路由器: ```javascript import { createApp } from 'vue'; import App from './App.vue'; import router from './router'; createApp(App).use(router).mount('#app'); ``` 4. **运行效果** 当用户访问不同的 URL 地址时,Vue Router 会自动切换 `<router-view>` 内部显示的内容为对应路径下的组件[^4]。 #### 结合 `keep-alive` 缓存功能 如果希望某些页面被缓存以便提升性能或者保留状态,可以将 `<router-view>` 包裹在一个 `<keep-alive>` 标签内。这样只有指定条件下的子组件会被缓存。 ```html <template> <div id="app"> <keep-alive include="Home"> <!-- 只有名称为 Home 的组件会被缓存 --> <router-view /> </keep-alive> </div> </template> ``` 注意:这里假设 `Home.vue` 文件中有 `export default { name: 'Home' }` 这样的声明[^1]。 #### 实际应用场景举例 当构建一个多标签页的应用程序时,通常会在每次导航至新页面时记录该页面的信息到全局变量或 Vuex store 中,并利用这些数据配合 `<router-link>` 动态生成顶部 Tab 列表项。点击某个 Tab 后重新触发相应路由跳转逻辑即可完成多窗口间快速切换的需求[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值