vue3页面跳转遇到 Discarded invalid param(s) “message“ when navigating

最近写了一个vue3的项目,在使用路由跳转的时候发现了一个问题,记录分享一下。

1.我在使用useRouter时,发现使用params传参,会使得跳转的页面接受不到参数,会报错,显示

Discarded invalid param(s) "message" when navigating

这个错误,无效参数。

代码如下:页面a跳转到页面b

     页面a:

<template>
  <div class="home">
    <div class="TiaoZhuan" @click="jump()">跳转</div>
  </div>
</template>

<script setup>
import { useRouter } from 'vue-router';
const Router=useRouter()

let params={message:'你真是一个好人,我好爱你啊'}
function jump(){
  Router.push({name:'about',params:{params}})
}
</script>

   页面b:

<template>
  <div class="about">
    <h1>{{ useMessage }}</h1>
  </div>
</template>

<script setup>
import { useRoute } from 'vue-router';

const route=useRoute()

let useMessage=route.params.message
</script>

2.后来我查找了一下资料,发现从Vue Router的2022-8-22 这次更新后,我们使用上面的方式在新页面无法获取。vue Router也提供了解决方法。 

      (1).query传参

          query传参是可以正常传参数的,但是传的参数会显示在url地址栏上。这里我就不介绍了。

        (2).使用 History API 方式传递和接收

          代码如下:

              页面a:

<template>
  <div class="home">
    <div class="TiaoZhuan" @click="jump()">跳转</div>
  </div>
</template>

<script setup>
import { useRouter } from 'vue-router';
const Router=useRouter()

let params={message:'你真是一个好人,我好爱你啊'}

function jump(){
  Router.push({name:'about',state:{params}})
}
</script>

               页面b:

<template>
  <div class="about">
    <h1>{{ useMessage }}</h1>
  </div>
</template>

<script setup>
let useMessage=history.state.params.message

console.log(history.state)
</script>

     这样你就可以正常的接受参数了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue 3中,可以使用Vue Router来实现页面之间的,并通过过渡效果来实现页面动画。以下是一个简单的示例: 首先,确保你已经安装了Vue Router: ```bash npm install vue-router@next ``` 然后,在你的Vue应用程序中,创建一个router.js文件,并配置Vue Router: ```javascript import { createRouter, createWebHistory } from 'vue-router'; const routes = [ { path: '/', name: 'Home', component: () => import('./views/Home.vue') }, { path: '/about', name: 'About', component: () => import('./views/About.vue') } ]; const router = createRouter({ history: createWebHistory(), routes }); export default router; ``` 在上面的示例中,我们定义了两个路由:'/'和'/about',分别对应Home.vue和About.vue组件。 接下来,在你的main.js文件中,导入并使用Vue Router: ```javascript import { createApp } from 'vue'; import App from './App.vue'; import router from './router'; createApp(App) .use(router) .mount('#app'); ``` 在App.vue组件中,你可以使用Vue的过渡效果来实现页面动画。以下是一个简单的示例: ```html <template> <transition name="fade" mode="out-in"> <router-view></router-view> </transition> </template> <style> .fade-enter-active, .fade-leave-active { transition: opacity 0.5s; } .fade-enter-from, .fade-leave-to { opacity: 0; } </style> ``` 在上面的示例中,我们使用了Vue的transition组件来包裹router-view,并定义了fade的过渡效果类名。通过调整类名对应的样式,你可以实现不同的过渡效果。 这样,当你进行页面时,Vue会自动应用过渡效果来实现页面之间的动画。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值