需求:子页面仅第一次进入时调用接口
App.vue
<router-view v-slot="{ Component, route }">
<keep-alive :include="cacheRoutes">
<component :is="Component" :key="route.fullPath" />
</keep-alive>
</router-view>
二级路由 Layout.vue
<div class="app-wrapper">
<global-menu></global-menu>
<div class="app-wrapper__content">
<router-view v-slot="{ Component, route }">
<keep-alive :include="cacheRoutes">
<component :is="Component" :key="route.fullPath" />
</keep-alive>
</router-view>
</div>
<div class="app-wrapper__footer">
<van-tabbar
fixed
:route="true"
safe-area-inset-bottom
placeholder
>
</van-tabbar>
</div>
</div>
- Layout不放入keepAlive include中
- 子路由keepAlive失效,即每次跳转都调用mounted
- Layout放入keepAlive include中
- 子路由keepAlive有效
- 有key的情况下,大约是Layout的关系?点回来时会触发Layout下已缓存的所有onActivated,暂时处理方法:onActivated判断一下当前路由
- 不加key的情况下,会出现参数不一致的同一页面不刷新
- Layout下的页面如果第一次进来时,会触发两次子页面mounted,子页面mounted→Layout页面mounted→子页面mounted
。???