vue-router——路由传值

一、用name传递参数

1.在路由文件src/router/index.js里配置name属性。

routes: [

    {

      path: '/',

      name: 'Hello',

      component: Hello

    }

]

2.模板里(src/App.vue)用$route.name的形势接收,比如直接在模板中显示:

<p>{{ $route.name}}</p>

二.通过<router-link> 标签中的to传参

也许你也会觉的上边的传参很不正规,也不方便,其实我们多数传参是不用name进行传参的,我们用<router-link>标签中的to属性进行传参,需要您注意的是这里的to要进行一个绑定,写成:to。先来看一下这种传参方法的基本语法:

<router-link :to="{name:xxx,params:{key:value}}">valueString</router-link>
  • name:就是我们在路由配置文件中起的name值。
  • params:就是我们要传的参数,它也是对象形势,在对象里可以传递多个值。

1.我们改造一下我们的src/App.vue里的<router-link>标签

 <router-link :to="{name:'xxx',params:{username:'haohaoxuexi'}}">详情页</router-link>

2.把src/reouter/index.js文件里给details配置的路由起个name,叫xxx.

{
    path: '/details',
    name: 'xxx',
    component: details
}

3.最后在模板里(src/components/details.vue)用$route.params.username进行接收.

 <p>{{$route.params.username}}</p>

三.利用url传递参数

1.修改App.vue的<router-link>标签(类似函数的实参传递)

<router-link to="/params/198/js is very good">我的</router-link>

2.修改index.js文件里的配置(类似函数的形参接收)

{
    path: '/params/:newsId/:newsTitle',
    name: 'mine',
    component: mine
}

3.最后在模板里(src/components/mine.vue)进行接收.

<p>{{ $route.params.newsId}}</p>
<p>{{ $route.params.newsTitle}}</p>
### Vue 中使用 `$emit` 进行组件间通信 在 Vue 应用程序中,可以利用 `$emit` 方法实现在不同类型的组件之间递消息和数据。对于父子组件间的通信而言,此方式尤为常见。 #### 子组件向父组件发送信息 当子组件需要通知其父级某些状态变化或提交表单时,可以通过调用 `this.$emit()` 来触发自定义事件,并附带任何必要的负载作为第二个参数递给父组件处理函数[^2]。 ```javascript // ChildComponent.vue methods: { viewBusiness() { const flag = false; this.$emit('closeMain', flag); } } ``` 上述代码展示了子组件如何通过 `$emit` 向上层发出名为 `'closeMain'` 的信号以及携带布尔型变量 `flag` 作为额外的数据。 #### 父组件接收来自子组件的信息 为了响应这些由子组件发起的通知,父组件应当监听相应的事件名称并在模板内绑定对应的处理器方法: ```html <!-- ParentComponent.vue --> <template> <child-component @closeMain="handleClose"></child-component> </template> <script> export default { methods: { handleClose(flag) { console.log(`Received from child component: ${flag}`); // 执行其他逻辑... } } }; </script> ``` 这里展示的是父组件怎样订阅子组件发射出来的特定事件 (`@closeMain`) 并指定要执行的动作——这里是打印接收到的消息至控制台并可能继续做更多事情。 #### 实现页面跳转的同时递参数 如果希望在一个视图切换到另一个的过程中共享一些上下文信息,则可以在导航前设置好目标路径及其查询字符串或者路由参数;也可以采用编程式的导航配合 Vuex 或者本地存储机制保存临时性的交互结果以便后续读取[^3]。 一种简单的方法是在点击按钮或其他触发表单行为的操作时构建完整的 URL 路径连同所需附加项一起交给浏览器地址栏更新,从而达到重定向的效果: ```javascript // 假设当前位于 A 组件内部 goToNextPage(hashValue) { this.$router.push({ name: 'TargetViewName', query: { hash: hashValue } // 将哈希放入query对象里 }); } // TargetViewName 对应 B 组件所在位置 mounted() { // 获取URL中的hash参数 const receivedHash = this.$route.query.hash; if (receivedHash !== undefined && receivedHash.length > 0){ // 处理获取到的hash } } ``` 这段 JavaScript 展示了一个场景下从源页面(A)前往目的地(B),并且安全地输了唯一标识符供后者解析使用的流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值