V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
exc
V2EX  ›  问与答

Vue-Router 用 router.go(-1) 返回上级页面后,如何不刷新数据?

  •  
  •   exc · 2021-03-15 14:22:21 +08:00 · 982 次点击
    这是一个创建于 1131 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Vue-Router 操作 History 时,使用 router.go(-1) 返回上级页面后,上级页面的数据会被重置,重新走一遍组件生命周期,等于刷新页面。

    如何不让页面自动刷新呢,或是在需要的时候刷新?
    第 1 条附言  ·  2021-03-15 15:37:37 +08:00
    谢谢大家的回复,keep-alive 可以满足我的需求,但这样一来,返回时,如果需要更新页面,要怎么办呢?
    11 条回复    2021-03-15 17:10:51 +08:00
    exc
        1
    exc  
    OP
       2021-03-15 14:23:25 +08:00
    测试: https://jsfiddle.net/1av9brxc/2/

    复现路径:点击 Home 输入一段字符,可以看到打印,然后点击 Foo 或 Bar,再返回(或点击返回按钮),Home 输入框里的文字不见了。
    liyang5945
        2
    liyang5945  
       2021-03-15 14:31:35 +08:00   ❤️ 1
    keep-alive
    yaphets666
        4
    yaphets666  
       2021-03-15 14:37:11 +08:00   ❤️ 1
    实现的方法很多,B 回 A 页面,在 A 页面路由守卫中判断来源页面,从而判断是否加载数据.同理还有返回 A 页面时携带参数.
    还有就是 A 页面 keep-alive
    exc
        5
    exc  
    OP
       2021-03-15 15:16:00 +08:00
    @liyang5945 @yunyuyuan @yaphets666 谢谢,这就去试试
    exc
        6
    exc  
    OP
       2021-03-15 15:36:08 +08:00
    @yaphets666 同理还有返回 A 页面时携带参数。返回 A 页面时,如何携带参数呢?
    lopda
        7
    lopda  
       2021-03-15 15:39:51 +08:00
    @yaphets666 赞同~
    yunyuyuan
        8
    yunyuyuan  
       2021-03-15 15:50:10 +08:00
    @exc #6 改 params 或者 store+watch
    exc
        9
    exc  
    OP
       2021-03-15 16:12:59 +08:00
    @yunyuyuan router.go() 函数好像不支持 params 参数吧?
    yunyuyuan
        10
    yunyuyuan  
       2021-03-15 16:17:50 +08:00
    @exc go(-1)无法知道上一个页面,当然无法传参数。如果你既不知道要去的上一个页面是哪个,又想传参数给那个页面,用 store+watch 就行了
    exc
        11
    exc  
    OP
       2021-03-15 17:10:51 +08:00
    @yunyuyuan 嗯嗯,也可以,不过 store 是全局持有吧,有没有类似通知的函数呢?因为 vue-router 肯定知道上一个页面嘛,那么他在加载上个页面时,调用一个重新打开方法就可以了。类似 Android 生命周期里的 onResume 方法。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5497 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 06:32 · PVG 14:32 · LAX 23:32 · JFK 02:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.