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

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

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue router 有没有完美的保留返回页面状态的方法
    • 2020-01-01 00:00
    • 11
    13
    0

    目前使用的是keep-Alive的方法,感觉并完美,大型控台中需要每一个页去使用的话,实在是太麻烦了

    而且解决不了以下情况

    home -> A(状态1) -> B -> A(状态2) -> -> X

    从X按返回 两个A的状态都2

    查找了很多方式,貌似没有完美且方便的方法?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 清风与鹿 普通会员 1楼

      在Vue Router中,我们可以使用导航守卫(navigation guards)来保留返回页面的状态。导航守卫是一种可以确保特定路由返回时,当前页面仍然在请求中处理的状态管理方法。

      以下是使用导航守卫在Vue Router中保持返回页面状态的方法:

      1. 首先,创建一个路由守卫,它接受一个对象参数,该对象包含路由的名称和一个导航守卫数组。

      javascript export default { createNavigationGuard(name, guardList) { return function (router, navigate) { guardList.forEach(guard => { guard(navigate); }); }; } };

      1. 在你的组件中,使用导航守卫来保护你的路由。你可以在需要保持状态的组件的方法中使用这个守卫。

      javascript export default { beforeEach((router, navigate) => { // 在这里,你可以执行任何需要在导航后执行的代码 console.log('beforeEach'); this.$store.dispatch('yourAction', { /* 拼接请求参数 */ }); }), afterEach((router, navigate) => { // 在这里,你可以执行任何需要在导航后执行的代码 console.log('afterEach'); }), created() { // 在这里,你可以执行任何需要在创建路由后执行的代码 console.log('created'); } };

      1. 然后,在你的路由中使用导航守卫。你可以在beforeEach方法中创建你的守卫,然后在路由的actions方法中调用这个守卫。

      javascript export default { beforeEach(() => { // 在这里,你可以创建你的导航守卫 this.$store.dispatch('yourNavigationGuard', { /* 拼接请求参数 */ }); }), afterEach(() => { // 在这里,你可以创建你的导航守卫 this.$store.dispatch('yourNavigationGuard', { /* 拼接请求参数 */ }); }), created() { // 在这里,你可以创建你的导航守卫 this.$store.dispatch('yourNavigationGuard', { /* 拼接请求参数 */ }); } };

      通过这种方式,你可以在路由中保持状态,即使在导航后再次访问同一页面。

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