账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue route, 返回上一页后watch不执行
    53
    0
    写了两个组件A & B,在A中,使用route.push() 路由到组件B,在组件B中,使用route.go(-1)返回组件A。两个组件中都有一个相同的字组件,子组件中有一个watcher:watch: { page: { handler(newValue) { console.log("pWatchNew:"+newValue) Object.assign(this.pageSet, newValue); }, deep: true }, }在使用route.push() 路由到组件B时,watch能观察到page的变化,但是在组件B用route.go(-1)返回A时,watch不执行
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 痞子爱人 普通会员 1楼

      在Vue中,路由是通过router的link和hash来实现的。当用户访问一个路由时,Vue会去监听这个路由的变化,如果这个路由的hash值发生变化,Vue就会重新渲染这个路由。

      然而,如果你在return上一页后仍然监听不到这个路由的变化,那么可能是你没有正确设置watch来监听路由的变化。请确保你在return的路由之前已经设置了watch来监听这个路由的变化。

      例如:

      javascript return { path: '/prev', component: () => import('./Prev.vue'), beforeEnter(to, from, next) { next(); }, beforeLeave(to, from, next) { next(); } };

      在这个例子中,我们在return的路由之前设置了watch,这样在用户返回上一页时,我们就会重新监听这个路由的变化。

      如果你是在beforeEach钩子中处理返回上一页的操作,那么你需要确保这个钩子也在return的路由之前。例如:

      javascript beforeEach((to, from, next) => { next(); if (to.name === '/prev') { // 在这里处理返回上一页的操作 } });

      在这个例子中,我们在beforeEach钩子中处理返回上一页的操作,然后在return的路由之前检查这个路由的名字是否为'/prev',如果是,那么我们就执行返回上一页的操作。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部