Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
765 views
in Technique[技术] by (71.8m points)

vue 怎么做到返回上一步的时候销毁组件,下一步保留缓存组件?

A->B->C 三个页面,怎么做到A再次进入B的时候,是重新渲染的,而C到B是从缓存中读取B的,

我的现在的思路:

<keep-alive include="currentView">
    <router-view></router-view>
</keep-alive>

beforeRouteLeave的时候加了判断,如果是返回到A的话,执行this.$destroy();销毁当前组件,其他的时候不销毁这个组件,让其缓存在内存中。可是这样会问题:只要我返回了一次A页面,执行了this.$destroy();无论从哪个页面进入B,B都是重新渲染,而不是从内存中读取,也就是说,只要执行了一次this.$destroy();,该组件就不会被缓存。B组件里面有子组件,根据条件有不同的数据源,所以从A到B必须是重新渲染的,有什么好的办法解决这个问题吗?看了尤大大在github评论,说最好别手动调用this.$destroy();。是从后端读取的数据,是webapp分页读取数据,我想B到C保留原来已经读取的数据,和一些之前的过滤数据。最好也保留滚动条的状态,我用的是vue-routerhash模式


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

在B中加入钩子beforeRouteUpdate,用于更新数据和页面。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...