使用keep-alive后(我不知道是不是用keep-alive的原因)

使用keep-alive后,点击查看进入详情界面,不关闭此详情界面,切换回主页,再一次点击另一个人进入详情界面,获取的数据和第一次一样,怎么回事?

img

img

img

img

img


主要是第五张图片,其他都是过程,$container = $('.children'), $trigger = $('.parent'); 其中(children和parent)是两个div class
第一次进入详情界面时$container和 $trigger都是3,这样三个父级元素都符合手风琴效果;第二次进入时,还是3,结果只有前三个父级元素符合手风琴效果,而我想要第二次进入时应该是4,这样才能让四个元素都尊崇手风琴效果。

第二次点详情进到详情页有没有获取到正确的数据,可以打印一下看看,如果打印的数据为第一次的数据,可以用beforeRouteEnter去调用数据试试

可以监听路由的变化,如果你的详情路由是有参数的,那么两次打开的页面参数是不一样的。
通过路由的name找到缓存的路由。如果缓存的路由参数和当前打开的页面路由参数不一样。
在router-view加上v-if,将router-view隐藏,把当前路由从缓存路由中移出,在this.$nextTick(() => {})里设置显示,把当前路由加在缓存路径中。

img

使用 keep-alive 缓存组件之后,组件的created只会执行一次,并且会出现两个特有的生命周期activated(组件被激活时)deactivated(组件被停用时)

是页面保活的原因,都保活了自然也就不会重新执行生命周期。你采用的应该是get传参,如果详情页想保持页面保活,可以试试动态传参(.../:id)。这个方法我没有用过,但理论上是可以实现的。