Vue用router.push(传参)跳转页面,参数改变,跳转页面数据不刷新的解决办法

vue-router同路由$router.push不跳转一个简单解决方案

vue-router跳转一般是这么写:


goPage(ParentDeptCode2,DeptCode2,hosName,hosId){  this.$router.push({    path:‘/ChoiceTime‘,    query:{      DeptCode:ParentDeptCode2,      DeptCode2:DeptCode2,      hosName:hosName,      hosId:hosId    }  })}

但是当遇到,需要跳转同页面不同query的情况,上面的方法不起作用。基本页面所有组件都需要刷新,我们只要跳转加载,

$route 作为vue实例的一个响应式属性,和在data中写的属性本质上是一样的,都可以通过this的方式拿到。既然你可以监听data中的属性变化,同样也可以监听 $route 的变化。watch中监听的对象默认回调函数中的参数值就是newVal,oldVal。作为 $route 属性来说当然也就是 to 和 from 的概念了。

watch: {
    ‘$route‘ (to, from) {
        this.$router.go(0);
    }
},

但是这种情况会出现手机端的白屏情况,而且对应移动端的ios依旧解决不了router.push(传参)跳转页面,参数改变,跳转页面数据不刷新的解决办法 .

所以,我们需要在定义路由界面这样写

app.vue
<keep-alive v-if="$route.meta.keepAlive">  <router-view/></keep-alive>  <!--<FooterGuide  />--><router-view v-if="!$route.meta.keepAlive">  <!-- 这里是不被缓存的视图组件,比如 page3 --></router-view>
router/index.js{
            name:‘ChoiceTime‘,
            path:‘/ChoiceTime/:DeptCode/:DeptCode2/:hosName/:hosId‘,
            component: ChoiceTime,
            meta: {
                title: ‘选择时间‘,
                keepAlive: false,
            },
 },  

路由将跳转到ChoiceTime.vue页面
goPage(ParentDeptCode2,DeptCode2,hosName,hosId){  this.$router.push({    name:‘ChoiceTime‘,    params:{      DeptCode:ParentDeptCode2,      DeptCode2:DeptCode2,      hosName:hosName,      hosId:hosId    }  })}
watch: {  ‘$route‘ (to, from) {    this.$router.go(0);  }},

这样,完美解决了移动端的页面刷新问题,也不会出现白屏的问题.

原文地址:https://www.cnblogs.com/anjing940/p/10156049.html

时间: 2024-08-29 05:36:48

Vue用router.push(传参)跳转页面,参数改变,跳转页面数据不刷新的解决办法的相关文章

this.$router.push 传参

index页面1.params this.$router.push()方法中path不能与params同用,否则param会失效,所以用name来指定页面,params来传递数据内容. 1 <template> 2 <img src="../../static/images/indexTermianal/teacher.png" alt="" @click ="go()" > 3 </template> 4 &

vue params、query传参使用

声明式:<router-link :to="...">编程式:router.push(...) 这两种方式 都可以实现跳转链接,在上篇文章继续,通过A组件跳转链接到B组件并且传参数. 1.router.push使用 router/index.js export default new Router({ routes: [ { path: '/', name: 'A', component: require('../components/A') }, { path: '/B/

Vue组件之间的传参

Vue组件之间的传参方式有三种 第一:父传子 第二:子传父 第三:兄弟之间相传 第一,父传子,顾名思义,外层组件传参给嵌套内部的组件 在父代中嵌套的标签 <son v-bind:toSon="fatherData"></son> //发送数据给子代 在子代中接收数据 需要添加一个属性叫做prpos props:["toSon"], <!DOCTYPE html> <html lang="en"> &

PHP_零基础学php_3PHP函数、传参函数、默认参数、函数返回值

<?php function say_hello() //无参数 { $name="tang"; echo "hello,".$name; echo "<br />"; echo "<hr />"; } say_hello();//函数调用 function say_helloS($some_name)//有参数 { echo "hello,".$some_name; echo

Vue配置路由和传参方式及路由守卫!

安装路由 npm i vue-router -S 引入路由 import VueRouter form VueRouter 注入路由模块 Vue.use(VueRouter) 定义路由匹配规则 let routes = [ {...}, {...} ] 上列匹配规则中 对象有如下属性 path : 路由路径 component : 所加载的组件 name : 别名 redirect : 重定向 children : 子级路由 创建路由实例 let router = new VueRouter({

前台VUE的组件之间传参方式

路由传参 """ 转跳: <router-link :to="'/course/'+course.id">{{course.name}}</router-link> 路由: { path: '/course/:course_id', name: 'detail', component: Detail } 获取: this.$route.params.course_id """ ""&

react router路由传参

今天,我们要讨论的是react router中Link传值的三种表现形式.分别为通过通配符传参.query传参和state传参. ps:进入正题前,先说明一下,以下的所有内容都是在react-router V4的版本下. 1.通配符传参 Route定义方式: <Route path='/path/:name' component={Path}/> Link组件: <Link to="/path/通过通配符传参">通配符</Link> 参数获取: th

vue-router2.0 组件之间传参及获取动态参数

<li v-for=" el in hotLins" > <router-link :to="{path:'details',query: {id:el.tog_line_id}}"> <img :src="el.image_list[0]"> <h3>{{el.tourism_name}} {{el.tog_line_id}}</h3> <p>{{el.address}}&

axios的post传参时,将参数转为form表单格式

import axios from 'axios'; import alert from './alert.js'; import Qs from 'qs' //引入qs 时axios的自带模块 let env = process.env.NODE_ENV; let root = ''; if (env === 'development') { console.log("api"); } else if (env === 'production') { console.log(&quo