Angular 页面跳转后返回前页状态(输入的数据)丢失,有没有什么简单的包引入后就能像普通页面一样跳转后保留输入数据? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
drymonfidelia
V2EX    Angular

Angular 页面跳转后返回前页状态(输入的数据)丢失,有没有什么简单的包引入后就能像普通页面一样跳转后保留输入数据?

  •  
  •   drymonfidelia 2024-04-19 15:23:16 +08:00 3554 次点击
    这是一个创建于 585 天前的主题,其中的信息可能已经有所发展或是发生改变。
    12 条回复    2024-04-20 11:50:33 +08:00
    lisongeee
        1
    lisongeee  
       2024-04-19 15:45:38 +08:00
    > 就能像普通页面一样跳转后保留输入数据

    好奇这个普通页面是哪种页面?
    solos
        2
    solos  
       2024-04-19 15:48:09 +08:00
    搞个 service 存一下不就行了
    drymonfidelia
        3
    drymonfidelia  
    OP
       2024-04-19 16:07:52 +08:00 via iPhone
    @lisongeee 非 SPA 网站跳转后点返回按钮之前输入的内容都在
    @solos 是一个现有的一千多个页面的巨型项目要升级,一个个改一个月都搞不定
    lisongeee
        4
    lisongeee  
       2024-04-19 16:38:44 +08:00
    > 非 SPA 网站跳转后点返回按钮之前输入的内容都在

    那是你看的网站自己使用内部逻辑去保留了数据

    比如 V2EX 不是 spa 吧,但是你在顶部的搜索框随便输入几个字符(别按回车) 然后点击页面上其它地方的链接,再回来,这个搜索框的内容丢失了

    而底部的输入框没有丢失是因为文本就存在 localStorage 里,回退的时候再取出来显示就行
    drymonfidelia
        5
    drymonfidelia  
    OP
       2024-04-19 16:43:27 +08:00 via iPhone
    @lisongeee 不是这样的,你做个 html 页面里面只放一个 input 标签,输入点内容,打开别的页面再返回,input 里输入的内容还在
    0xbe
        6
    0xbe  
       2024-04-19 16:51:17 +08:00
    keepalive
    zhuisui
        7
    zhuisui  
       2024-04-19 17:09:42 +08:00
    xwwsxp
        8
    xwwsxp  
       2024-04-19 17:13:55 +08:00
    @drymonfidelia 不一样吧,v2ex 感觉不是 SPA ,是纯原生的,即 HTML 、CSS 、Javascript 构建的,这种方式的返回按钮是通过浏览器的 history 来给你保存的,而 SPA 应用本质上就是利用的 history 的 API ,并且全是动态的 JS ,这个时候浏览器怎么可能给你保存,可以参考 Vue 中的 keepalive
    xwwsxp
        9
    xwwsxp  
       2024-04-19 17:15:03 +08:00
    @drymonfidelia 如果换用 React ,就是 document.createElement(xxx,docuemnt.createElement(xxx)) 这种无限套娃的方式构建的 SPA 应用,和原生差别很大。
    xwwsxp
        10
    xwwsxp  
       2024-04-19 17:16:05 +08:00
    @drymonfidelia 不一样吧,v2ex 感觉不是 SPA ,是纯原生的,即 HTML 、CSS 、Javascript 构建的,这种方式点击返回按钮是通过浏览器的 history 来给你保存的,而 SPA 应用本质上就是利用的 history 的 API ,并且全是动态的 JS ,这个时候浏览器怎么可能给你保存,可以参考 Vue 中的 keepalive
    c3de3f21
        11
    c3de3f21  
       2024-04-19 17:59:22 +08:00
    - 简单方式
    - 实现一个 CacheService ,两个接口 setCache(key,data),getCache(key),底层可以用 sessionStorage 实现
    - 所有组件的状态都放到一个字段里 `state`,组件离开的时候 setCache('key,state)
    - 组件初始化的时候 getCache(key)?this.state = getCache(key):初始化 state
    - 复杂方式
    - https://github.com/ng-alain/delon/blob/master/packages/abc/reuse-tab/provide.ts 可以看看 ng-alain 的 reuseTab 源码找找思路
    scung
        12
    scung  
       2024-04-20 11:50:33 +08:00
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1531 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 16:32 PVG 00:32 LAX 08:32 JFK 11:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86