目录
第一步 创建一个文件夹 router ,里面创建一个index.js 内容是
路由是什么?
就是点击某个”标签”时 转到显示出不同的组件。
比如点击 home 按钮就在特定的位置显示出 home.vue里的内容。
怎么实现路由
第一步 创建一个文件夹 router ,里面创建一个index.js 内容是
// 该文件专门用于创建整个应用的路由器
import VueRouter from 'vue-router'
//引入组件
import A from '../components/A'
import B from '../components/B'
//创建并暴露一个路由器
export default new VueRouter({
routes:[
{
path:'/urlA',
component:A
},
{
path:'/urlB',
component:B
}
]
})
第二步 在main.js中引入和应用 router
//引入路由器
import router from ‘./router’
//应用插件
Vue.use(VueRouter)
第三步 在Vue中 通过两个标签进行配置
<!– Vue中借助router-link标签实现路由的切换 –>
<router-link to=”/urlA”>A组件</router-link>
<router-view></router-view>
当点击上面的 router-link 标签时,router-view标签 所在的位置就会被替换为 A.vue
跳转路由时的参数传递
通过 router-link 中得到to属性传参
有两种写法 ,一种是用过 params 一种是 query
query
query的 写法有两种 ,一种是字符串直接传递 一种是对象写法
<li v-for="m in messageList" :key="m.id">
<!-- 跳转路由并携带query参数,to的字符串写法 模板字符串 加 `` 里面用$ 来提取变量 -->
<router-link :to="`/home/message/detail?id=${m.id}&title=${m.title}`">{{
m.title
}}</router-link
>
<!-- 跳转路由并携带query参数,to的对象写法 -->
<router-link
:to="{
path: '/home/message/detail',
query: {
id: m.id,
title: m.title,
},
}"
>
{{ m.title }}
</router-link>
</li>
params
也是两种写法
需要注意的是 params 的对象写法中 不能使用path ,只能使用命名路由name属性。
<li v-for="m in messageList" :key="m.id">
<!-- 跳转路由并携带params参数,to的字符串写法 -->
<router-link :to="`/home/message/detail/${m.id}/${m.title}`">{{m.title}}</router-link>
<!-- 跳转路由并携带params参数,to的对象写法 -->
<router-link :to="{
name:'xiangqing',
params:{
id:m.id,
title:m.title
}
}">
{{m.title}}
</router-link>
</li>
在跳转后的vue中可以通过下面的表达式取出传递的参数
$route.query.XXX
$route.params.XXX
为了简化写法,可以使用路由中的 props 属性。
query参数和 param参数的区别
1.query传递显式参数,params传递不显式参数,params相对于query来说较安全一点
2.params传参 只能用 name,不能用 path。
编程式的路由导航
普通的路由导航需要借助 router-link 标签,也可以用函数来描述路由跳转的逻辑。类似于事件
通过 $router的push 和 replace 实现Vue的跳转。
push在切换vue的时候不会覆盖掉之前的切换记录,之后可以回退到之前的Vue。
replace 在切换的时候会覆盖,也就是无法回退到之前的Vue。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/92749.html