vue学习笔记(路由命名、视图、redirect、alias、router.push、路由组件传参)

1.路由命名


<router-link to="/user/1/name/admin">admin</router-link>//可以用以下方式实现
<router-link :to="{name:'staff',params:{id:1,username:'admin'}}">admin</router-link>|

2.命名视图

一个路由可以关联多个组件组成

components:{
                        default:UserInfos,
                        home:Home,
                        about:About,

                    }
<router-view name="home"></router-view>
 <router-view name="about"></router-view>

3.编程式导航

$this.router.push 注意区分this.$route和this.$router

在user.vue中添加,则点击admin或tourist后跳转到如下页面

mounted(){
        this.$router.push({name:'staff',params:{id:3,username:'testuser'},repalce:true});
       // this.$router.replace({name:'staff',params:{id:3,username:'testuser'}});
    }
this.$router.push('/test');
this.$router.push({name:'staff',params:{id:3,username:'testuser'}});
// 带查询参数,结果是 /register?plan=private
router.push({ path: '/register', query: { plan: 'private' } })

// 带 hash,结果是 /about#team
router.push({ path: '/about', hash: '#team' })
// `params` 不能与 `path` 一起使用
router.push({ path: '/user', params: { username } }) // -> /user

4.重定向redirect和别名alias:

{ 
                path: '/about2', 
                redirect:'/about',
                
            },
            { 
                path: '/about', 
                alias:'/myabout',
                name:'aboutpage',
                component: About 
            },

输入about2后 自动变为about,而别名不会修改,是让两个路径指向了同一个component

也可以重定向到命名的路由

const routes = [{ path: '/home', redirect: { name: 'homepage' } }]
{ 
                path: '/about2', 
                redirect:{name:'aboutpage'},
                
            }

5.路由组件传参——解决路由的紧耦合

路由数组中添加props:true


                path: '/user/:id(\\d+)/name/:username', 
                name:'staff',
                component: User ,
                props:true,

使用页面接收数组,则可以在页面中直接使用

My id is{{ id }},name is {{ username }}
    <p>  
        <router-link :to="'/user/'+  id + '/name/'+username+'/test'">嵌套测试</router-link> 
    </p>
export default {
    name:'UserVue',
    props:['id','username'], 

也可以强制传递参数

path: '/user/:id(\\d+)/name/:username', 
name:'staff',
component: User ,props:{id:5},

点击admin后

点击嵌套测试后

因为点击嵌套测试后路径中使用的usrname没有使用对应的方式传递进来,所以是undefine

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue中,可以使用`this.$router.push`方法进行路由传参。根据你提供的引用内容,有三种不同的方式来传递参数。 第一种是使用`query`参数。你可以在`this.$router.push`方法的参数中使用`query`属性来传递参数,例如: ```javascript this.$router.push({ path: '/mtindex/detail', query: { shopid: item.id } }); ``` 在目标页面中,你可以通过`this.$route.query.shopid`来获取传递的参数。 第二种是使用`params`参数。类似地,你可以在`this.$router.push`方法的参数中使用`params`属性来传递参数,例如: ```javascript this.$router.push({ name: 'detail', params: { shopid: item.id } }); ``` 在目标页面中,你可以通过`this.$route.params.shopid`来获取传递的参数。 第三种是使用动态路由。在路由配置中,你可以使用`path`和`name`来配置动态路由,然后在`this.$router.push`方法中使用相应的路径或名称来传递参数。例如: ```javascript // 路由配置 { path: '/d/:id', component: MyComponent } // 传递参数 this.$router.push({ path: `/d/${id}` }); ``` 在目标页面中,你可以通过`this.$route.params.id`来获取传递的参数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue-this.$route.query和this.$route.params的使用例子](https://blog.csdn.net/weixin_43735255/article/details/98875659)[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^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [vue路由传参](https://blog.csdn.net/m0_65642423/article/details/126670027)[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^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值