-
2022-04-09 09:34:40
watch: { $route: { handler(newVal, oldVal) { //判断newVal有没有值监听路由变化 if(newVal){ this.getData(); } }, deep: true } },
更多相关内容 -
vue实现路由监听和参数监听
2020-10-16 02:14:39今天小编就为大家分享一篇vue实现路由监听和参数监听,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
React-router4路由监听的实现
2020-12-09 15:51:53router-dom”: “^4.2.2”),项目中的一部分页面是需要给app客户端的同学使用,这样H5项目中的title就不能一成不变,需要显示对应页面的title,所以,我们就需要去监听路由变动来更改title。 思路 在react中,例如... -
vue 路由监听的方式
2021-12-29 16:29:55目录路由监听方式1: 通过 watch 进行监听路由监听方式2:通过钩子函数 beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave进行监听路由监听方式3:全局路由监听 this.$router.beforeEach 路由监听方式1: 通过...在开发vue项目的过程中,经常会对某些页面或全局项目的路由进行监听,当路由发生变化的时候去执行某些操作,下面是对监听路由的几种方式的总结
目录
路由监听方式1: 通过 watch 进行监听
// 方式1、监听路由 $route 变化 export default{ watch: { $route(to, from){ console.log('路由变化了') console.log('当前页面路由:' + to); console.log('上一个路由:' + from); }, } } // 方式2、监听路由 $route 变化, 使用handler函数 export default{ watch: { '$route': { // $route可以用引号,也可以不用引号 handler(to, from){ console.log('路由变化了') console.log('当前页面路由:' + to); console.log('上一个路由:' + from); }, deep: true, // 深度监听 immediate: true, // 第一次初始化渲染就可以监听到 } } } // 方式3、监听路由 $route 变化,触发methods里的方法 export default{ watch: { '$route': 'initData' }, methods: { initData(){ console.log('路由变化了') } } } // 方式4、监听路由的 path 变化 export default{ watch: { '$route.path'(toPath, fromPath){ console.log('路由变化了') console.log('当前页面路由地址:' + toPath) console.log('上一个路由地址:' + fromPath) }, } } // 方式5、监听路由的 path 变化, 使用handler函数 export default{ watch: { '$route.path': { handler(toPath, fromPath){ console.log('路由变化了') console.log('当前页面路由地址:' + toPath) console.log('上一个路由地址:' + fromPath) }, deep: true, // 深度监听 immediate: true, // 第一次初始化渲染就可以监听到 } } } // 方式6、监听路由的 path 变化,触发methods里的方法 export default{ watch: { '$route.path': 'initData' }, methods: { initData(){ console.log('路由变化了') } } }
路由监听方式2:通过钩子函数 beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave进行监听
export default{ beforeRouteEnter(to, from, next){ // 渲染该组件前调用这个钩子,因此组件还未被创建,不能获取this console.log(this) // 结果为:undefined console.log('beforeRouteEnter') next() }, beforeRouteUpdate(to, from, next){ //这个组件是被复用的时候调用,比如带有动态参数的路由跳转:/foo/11 跳转到 /foo/12 console.log(this) // 可以访问this console.log('beforeRouteUpdate') next() }, beforeRouteLeave(to, from, next){ // 导航离开当前路由的时候被调用,this可以被访问到 console.log(this) // 可以访问this console.log('beforeRouteLeave') next() }, }
路由监听方式3:全局路由监听 this.$router.beforeEach
// 方式1、在App.vue的create中进行全局路由监听 export default { name: 'App', created() { this.$router.beforeEach((to, from, next) => { console.log(to); console.log(from); next() }) } } // 方式2、在路由文件(/router/index.js)中进行全局路由监听 import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) let routes = [ { path: '/login', component: resolve => require(['@/views/login'], resolve), }, ] let router = new Router({ mode: 'history', // 去掉 url 中的 # scrollBehavior: () => ({ y: 0 }), base: process.env.VUE_APP_BASE_DOMAIN, routes, }) router.beforeEach((to, from, next) => { console.log(to); console.log(from); next() }) export { routes router }
后面如果遇到其他监听方式会继续补充
-
react 路由监听
2022-01-04 20:15:50import { useLocation } from "react-router"; const location = useLocation(); useEffect(() => { console.log("location:", location); }, [location]);import { useLocation } from "react-router"; const location = useLocation(); useEffect(() => { console.log("location:", location); }, [location]);
-
vue路由监听失效
2021-08-26 15:15:34场景:"vue": "2.6.10" "vue-router": "3.0.2", ...亲测,监听失效 写法二 watch: { $route: { handler: function(val, oldVal){ console.log(val); }, deep: true // 深度观察监听 } }, 亲测,监...场景:"vue": "2.6.10" "vue-router": "3.0.2",
写法一
watch: { $route(to, from) { debugger; }, },
亲测,监听失效
写法二
watch: { $route: { handler: function(val, oldVal){ console.log(val); }, deep: true // 深度观察监听 } },
亲测,监听失效
写法三
watch: { //写成一个方法 '$route':'getPath' }, methods: { getPath(){ console.log(this.$route.path); } }
亲测,监听失效
写法四
watch: { $route: { immediate: true, // 一旦监听到路由的变化立即执行 handler(to, from) { debugger console.log("监听路由:" + JSON.stringify(to.name)); }, }, },
能获取到to的数据,获取不到from的数据,在特定的场景下还是不能使用
方法五 重点来了
通过 vue-router 的钩子函数 beforeRouteEnter beforeRouteUpdate beforeRouteLeave
<script> export default { name: 'app', // 监听,当路由发生变化的时候执行 beforeRouteEnter (to, from, next) { // 在渲染该组件的对应路由被 confirm 前调用 // 不!能!获取组件实例 `this` // 因为当钩子执行前,组件实例还没被创建 }, beforeRouteUpdate (to, from, next) { // 在当前路由改变,但是该组件被复用时调用 // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候, // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。 // 可以访问组件实例 `this` }, beforeRouteLeave (to, from, next) { // 导航离开该组件的对应路由时调用 // 可以访问组件实例 `this` } </script>
亲测能监听路由的变化,可以获取到路由变化的数据from和to,再添加具体的业务数据
-
Flutter路由监听
2020-12-02 16:04:12后来,为了更细的监听路由,我发现了flutter自带的监听器,直接上代码,节约时间 首先创建一个全局变量,不在任何类里面 final RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>(); ... -
Vue路由跳转及路由监听
2021-02-23 18:41:06路由跳转 this.$router.push('/Student'); 路由监听 watch:{ $route:{ handler:function (val,oldVal) { if (val.path === '/Student') { this.findAll(); } }, deep:true } }, -
vue 检测路由变化 动态监听路由变化 路由监听事件
2019-08-08 10:16:32Vue中 想在路由变化的时候插入事件,需要使用到 vueRouter动态路由匹配中的响应路由参数的变化方法,提醒一下,当使用路由参数时,例如从 /user/foo 导航到 /user/bar,原来的组件实例会被复用。因为两个路由都渲染... -
监听 --以及路由监听
2020-08-19 20:14:52// 一般监听 watch:{ ...// 深度监听路由 watch: { $route: { handler: function(val, oldVal){ console.log(val); }, // 深度观察监听 deep: true } }, watch: { imgFile: function(file) { t -
vue 路由监听 watch
2021-07-30 09:39:27一、监听路由从哪儿来到哪儿去 watch:{ $route(to,from){ console.log(to.path); } }, 二、监听路由变化获取新老路由信息 watch:{ $route:{ handler(val,oldval){ console.log(val);//新路由信息 console.... -
vue路由监听和参数监听
2019-03-19 15:05:001.路由携带数据跳转 routerAction(hideDisplays, data) { switch (hideDisplays) { case "pubAccountMenu": this.$router.push({ name: "AppAccountInfo", });... -
React-router-dom实现路由监听
2022-03-28 20:13:29变向要你使用function而不是class,强行推给你用hook,无语 uselocation不能在class里用只能function 于是我就查文档,react里useeffect可以实现监听,于是把参数加进去就可以啦,router的文档也是这样子写的 -
React [Umi] history(API) 路由监听
2021-09-01 09:08:03路由跳转 import { history } from 'umi'; // 跳转到指定路由 history.push('/welcome') // 带参数跳转到指定路由 history.push('/welcome?title=value') history.push({ pathname: '/welcome',...路由监听 componen -
vue中的深度监听和路由监听
2021-04-22 14:31:07路由监听 // 深度监听 watch: { //监听的对象 tableData:{ handler:function(newV,oldV){ console.log('watch中:',newV) }, deep:true, //深度监听设置为 true } //路由监听 路由跳转时触发 $... -
react的路由监听
2019-09-03 23:20:46所有的路由组件props身上都会有三个属性,而这三个属性记录了路径的变化情况,路径变化,属性就会变化,属性变化,就会触发componentWillReciveProps这个钩子,我们可以利用这个钩子做一些处理,而要监听路由的变化... -
vue路由 监听+跳转
2020-09-16 14:05:43监听路由 和 同页面跳转只有传递参数发生变化的问题 解决方法: watch:{ '$route' (to, from) { console.log('to',to) console.log('from',from) }, } 路由跳转 方法一: 路由跳转+传参 this.$router.push({ ... -
vue watch 路由监听 属性监听
2019-11-08 16:10:34作为小白,在开发中我遇到一个问题,想要实现改变输入内容就...这里我当时没有理解watch是怎么监听的,傻乎乎的定义了一个中间变量,其实watch监听,只需要将要监听的属性作为函数名就可以了,函数会有两个参数oldVal... -
vue cli3.0 路由监听
2020-06-16 14:56:16import { Component, Vue,Watch } from 'vue-property-decorator'; @Component({ ... 查看路由状态并做出相应动画跳转 * */ @Watch('$route',{immediate:true}) private changeRouter(){ console -
vue监听浏览器原生返回按钮,进行路由转跳操作
2021-01-18 22:17:51今天测试给我报了个bug说点击浏览器返回页数据显示的不对,我查了半天原因:需要监听浏览器的回退按钮,并阻止其默认事件。 具体操作方法如下: 1、挂载完成后,判断浏览器是否支持popstate ...否则其他vue路由页面也会 -
vue路由监听以及全局参数监听
2019-08-29 14:51:57watch:{ '$store.getters.getUserId' : function(val){ ... console.log("路由发生了变化 原来路由:" ); console.log(oldVal); console.log("新路由:" ); console.log(val); } } } -
vue在App.vue文件中监听路由变化刷新页面操作
2021-01-19 12:38:05在路由跳转时,会出现页面需要重新刷新一遍才能获取数据加载页面,这时添加一个监听器,如果跳转到页面刷新一次。 export default { name: 'App', provide(){ return{ reload:this.reload } }, data(){ ... -
vue路由监听不到怎么办?
2020-06-20 18:10:20vue有时候监听不到路由变化怎么办?最近在使用vue项目的时候发现我们使用的watch监听不到$route的变化,查了很多文档最终终于找到解决办法。方法一:路由包含子路由方法二:监听$route.path对象方法三:使用vue自带... -
vue中的路由监听,在当前页面监听路由的改变:beforeRouteEnter等
2021-05-10 11:31:49前言: 应用场景,我们需要在进入这个页面前判断,...第一:beforeRouteEnter ,拦截路由进入 拿到的to,form的格式 具体使用: beforeRouteEnter(to, from, next) { console.log(to) console.log(from) ... -
dva路由监听
2018-07-03 15:59:55在dva中我们可以在Modal中实现事件监听,通过在modal中添加一个 subscriptions,并且在里面创建一个setup函数{ namespace: 'infoArea', state: { }, subscriptions: { setup (vlaue) { console.log(vlaue) ..... -
this.props.history.listen路由监听与取消监听
2022-02-21 14:07:44this.props.history.listen路由监听与取消监听 -
AngularJS监听路由的变化示例代码
2020-11-22 16:06:55话不多说,我们下面直接来看实现的示例代码 【一】Angular 路由状态发生改变时可以通过’ $stateChangeStart ‘、’ $... //路由监听事件 $rootScope.$on('$stateChangeStart', function(event, toStat -
vue-router 路由监听 重定向 路由懒加载 模式
2019-07-16 19:58:05ajax: axios: fetch:
收藏数
145,083
精华内容
58,033