请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

一个关于多tab页的严重问题

老师我想问一下,如果我有一个业务是这样的
列表A可以打开详情B(query区分)

在app入口那里加了keep-alive的情况下,默认来说会保留组件,但是在不关闭详情B的情况如果我通过列表A打开另一个query的详情B,这个时候新的详情B会覆盖之前的详情B,但是不会触发生命周期,因为没有重新加载组件

在app入口去掉keep-alive,默认也会旧的详情B会被新的详情B覆盖(因为同一个路由),但是切换的tab页的时候会多次触发生命周期方法,导致我填写的数据丢失

这种情况我怎么处理呢

正在回答 回答被采纳积分+3

插入代码

1回答

提问者 qq_艾诺_ 2022-11-11 11:29:44

而且keep-alive有个缺陷,就是我如果关闭了tab页,再打开还是会显示上次的内容。

0 回复 有任何疑惑可以回复我~
  • Sunday #1
    你好,这种情况下可以使用  keepalive 的 inclues 来处理,但是需要自己维护一个栈
    回复 有任何疑惑可以回复我~ 2022-11-11 14:06:14
  • 提问者 qq_艾诺_ 回复 Sunday #2
    我也是这么想的。inlucde里的栈是一打开的tabs组件的名字(去重),但是我有两个页面用的都是同一个组件(path不同),我其中一个修改了之后(未保存),再关闭;再打开还是修改之后的内容。只有等两个都关闭了,才会加载新的数据。而我想要的其实是关闭了其中一个再打开这一个path的组件时重新加载。所以我觉得要实现我这个需求,我得自己写一个keepalive,include的是当前打开的tab的fullpath而不是组件的名字
    回复 有任何疑惑可以回复我~ 2022-11-11 15:39:35
  • Sunday 回复 提问者 qq_艾诺_ #3
    不需要自己实现keepAlive ,只需要构建出一个数组,动态的推入,弹出就可以了。
    回复 有任何疑惑可以回复我~ 2022-11-11 16:49:40
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信