export default{ name: 'Home', data () { return { iconList: [], recommendList: [], swiperList: [], weekendList: [] } }, components: { HomeHeader, HomeSwiper, HomeIcons, HomeRecommend, HomeWeekmend }, methods: { getHomeInfo () { axios.get('/api/index.json') .then(this.getHomeInfoSucc) }, getHomeInfoSucc (res) { if (res.data.ret && res.data.data) { const data = res.data.data this.iconList = data.iconList this.recommendList = data.recommendList this.swiperList = data.swiperList this.weekendList = data.weekendList } } }, mounted () { this.getHomeInfo() } } </script>
每次從city頁切換回home頁面的時候mounted這個鈎子都會執行,ajax都會被重新獲取,性能需要優化。
用keep-alive,keep-alive是Vue的內置組件,能在組件切換過程中將狀態保留在內存中,防止重復渲染DOM。
app.vue
<template> <div id="app"> <kepp-alive> <router-view/> </kepp-alive> </div> </template> <script> export default { name: 'App' } </script>
keep-alive生命周期鈎子函數:activated、deactivated,使用<keep-alive>會將數據保留在內存中,如果要在每次進入頁面的時候獲取最新的數據,需要在activated階段獲取數據,承擔原來created鈎子中獲取數據的任務。