V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
exc
V2EX  ›  问与答

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

  •  
  •   exc · Mar 15, 2021 · 1734 views
    This topic created in 1871 days ago, the information mentioned may be changed or developed.
    Vue-Router 操作 History 时,使用 router.go(-1) 返回上级页面后,上级页面的数据会被重置,重新走一遍组件生命周期,等于刷新页面。

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

    复现路径:点击 Home 输入一段字符,可以看到打印,然后点击 Foo 或 Bar,再返回(或点击返回按钮),Home 输入框里的文字不见了。
    liyang5945
        2
    liyang5945  
       Mar 15, 2021   ❤️ 1
    keep-alive
    yaphets666
        4
    yaphets666  
       Mar 15, 2021   ❤️ 1
    实现的方法很多,B 回 A 页面,在 A 页面路由守卫中判断来源页面,从而判断是否加载数据.同理还有返回 A 页面时携带参数.
    还有就是 A 页面 keep-alive
    exc
        5
    exc  
    OP
       Mar 15, 2021
    @liyang5945 @yunyuyuan @yaphets666 谢谢,这就去试试
    exc
        6
    exc  
    OP
       Mar 15, 2021
    @yaphets666 同理还有返回 A 页面时携带参数。返回 A 页面时,如何携带参数呢?
    lopda
        7
    lopda  
       Mar 15, 2021
    @yaphets666 赞同~
    yunyuyuan
        8
    yunyuyuan  
       Mar 15, 2021
    @exc #6 改 params 或者 store+watch
    exc
        9
    exc  
    OP
       Mar 15, 2021
    @yunyuyuan router.go() 函数好像不支持 params 参数吧?
    yunyuyuan
        10
    yunyuyuan  
       Mar 15, 2021
    @exc go(-1)无法知道上一个页面,当然无法传参数。如果你既不知道要去的上一个页面是哪个,又想传参数给那个页面,用 store+watch 就行了
    exc
        11
    exc  
    OP
       Mar 15, 2021
    @yunyuyuan 嗯嗯,也可以,不过 store 是全局持有吧,有没有类似通知的函数呢?因为 vue-router 肯定知道上一个页面嘛,那么他在加载上个页面时,调用一个重新打开方法就可以了。类似 Android 生命周期里的 onResume 方法。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5714 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 01:59 · PVG 09:59 · LAX 18:59 · JFK 21:59
    ♥ Do have faith in what you're doing.