vue-router路由导航url已改变,但未跳转至对应组件

vue-router路由导航url已改变,但未跳转至对应组件

原因:没有写router-view路由出口,当然不会显示

今天要做一个跳转路由的小功能,本小白没有相关知识,但又要短时间内写出来,没有时间去慢慢看官方文档,只能照瓢画葫芦,跟着别的项目里别人写的路由跳转自己瞎写一通,记录一下写的过程以及错误的原因。

1.安装配置vue-router

由于本项目是用pnpm管理各种包,只需在package.json文件中添加需要的版本号
在这里插入图片描述
然后运行pnpm i 命令即可安装vue-router

2.在src文件夹下新建一个router.ts文件,在里面写路由配置

import { createRouter, createWebHashHistory } from 'vue-router'
//引入vueRouter
import * as vueRouter from 'vue-router';
// 2. 定义一些路由
// 每个路由都需要映射到一个组件。
const routes = [
  {
    name: 'ContentDetail',
    path: '/ContentDetail',
    //组件懒加载
    component: () => import('./components/ContentDetail/ContentDetail.vue')
  },
]
// 3. 创建路由实例并传递 `routes` 配置
const router = vueRouter.createRouter({
  history: vueRouter.createWebHashHistory(),
  routes,
})

export default router;

3.在main.ts文件中引入并use router

import { createApp } from 'vue'
import router from './router';
const app = createApp(App);
app.use(router).mount('#app')

4.在需要路由跳转的文件中使用 router.push 方法

编程式导航,可以使用 router.push 方法。这个方法会向 history 栈添加一个新的记录,所以,当用户点击浏览器后退按钮时,会回到之前的 URL。

import { useRouter } from 'vue-router';
const router = useRouter();

/**
 * 查看详情跳转路由,携带query参数
 */
const seeRouterPush = (id: string) => {
  router.push({
    path: '/ContentDetail',
    query: { id },
  });
};

5.在对应组件中(ContentDetail),获取传过来的query,并由此请求相应数据

import { useRoute } from 'vue-router';

//获取路由传过来的参数id
const { query }: any = useRoute();
const contentId = ref<string>(query.id);
//请求获取文章详情接口

6.问题的出现

此时天真的我以为,该有的都有了,但是点击列表时,发现url是改变了,但是却没有跳转至ContentDetail组件,问了前辈才知道,我连router-view路由出口都没有写,当然没办法显示了。
router-view路由出口
在要替换的未知加上

<router-view></router-view>

则对应位置会插入跳转至的组件,把它放在任何地方,以适应布局,我在这里需要把它放到app.vue里,其他地方当然也是可以的。

总结

在写一个功能的时候,还是需要知道其原理才比较好,照瓢画葫芦能应付得了一次,但却很难举一反三。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue RouterVue.js 官方的路由管理器,用于实现前端路由跳转。要进行路由跳转,你需要完成以下几个步骤: 1. 首先,确保你的项目中已经安装了 Vue Router。可以通过 npm 或 yarn 进行安装: ```bash npm install vue-router ``` 或 ```bash yarn add vue-router ``` 2. 在你的 Vue 项目的入口文件(一般是 `main.js`)中引入 Vue Router,并使用它: ```javascript import Vue from 'vue' import VueRouter from 'vue-router' // 导入你的路由配置文件 import routes from './routes' Vue.use(VueRouter) const router = new VueRouter({ mode: 'history', // 可选值为 'hash' 或 'history',默认为 'hash' routes // 路由配置 }) new Vue({ router, // 注入路由实例 render: h => h(App) }).$mount('#app') ``` 3. 创建一个路由配置文件(例如 `routes.js`),在该文件中定义路由的映射关系: ```javascript import Home from './views/Home.vue' import About from './views/About.vue' const routes = [ { path: '/', name: 'home', component: Home }, { path: '/about', name: 'about', component: About } ] export default routes ``` 4. 在你的 Vue 组件中使用 `<router-link>` 标签或 `$router` 对象进行路由跳转。下面是几个常用的示例: - 使用 `<router-link>` 标签实现路由跳转: ```html <router-link to="/">Home</router-link> <router-link to="/about">About</router-link> ``` - 使用 `$router` 对象编程式地进行路由跳转: ```javascript // 在某个方法中跳转到指定路由 this.$router.push('/') // 跳转到根路径 this.$router.push('/about') // 跳转到 /about 路径 // 在某个方法中通过路由名称跳转 this.$router.push({ name: 'home' }) // 跳转到名称为 home 的路由 ``` 这样,你就可以通过 Vue Router 实现路由跳转了。请注意,以上只是一个简单的示例,你可以根据实际需要配置更多高级功能,例如路由参数、嵌套路由等。详情请参考 Vue Router 的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值