需求:
希望从主页跳转到详情页的时候,底部footer隐藏。
我的尝试:
在详情页的mounted里,获取当前路由,如果是详情页,就隐藏底部footer。
(这样出现了个问题: 从详情页点击路由跳转到首页之后底部不出现了(因为从首页到详情页footer只渲染了一次))
目前是vue-cli起的项目,有vue-router。
求解。(希望每次路由跳转都判断是不是详情页,如果是的话,就隐藏底部)
需求:
希望从主页跳转到详情页的时候,底部footer隐藏。
我的尝试:
在详情页的mounted里,获取当前路由,如果是详情页,就隐藏底部footer。
(这样出现了个问题: 从详情页点击路由跳转到首页之后底部不出现了(因为从首页到详情页footer只渲染了一次))
目前是vue-cli起的项目,有vue-router。
求解。(希望每次路由跳转都判断是不是详情页,如果是的话,就隐藏底部)
你可以
在主页的index.vue引入你的页脚组件啊
<template>
<div>
<nav-bar></nav-bar>
<div class="main-box">
<help-nav></help-nav>
<div class="main" style="width:87.9%;padding:25px;overflow-y:scroll;min-height:800px;">
<div class="help-title">
<p><span></span>帮助文档</p>
</div>
<router-view/>
</div>
</div>
<pub-footer></pub-footer>
</div>
</template>
详情页的话就不要引用footer组件了啊
1、利用路由元:meta ,加多一个 isShowBottomTab 的属性。
{
path: '/index',
name: 'index',
component: index,
meta: {
isShowBottomTab: true,
keepAlive: true, //此组件需要被缓存
isBack: false, //用于判断上一个页面是哪个
}
},
2、然后在路由全局守卫勾子:beforeEach ,把它存在vuex,也就是 store 里面,以便全局可用。
router.beforeEach((to, from, next) => {
let { isShowBottomTab = false } = to.meta;
// document.title = title
store.commit('SET_PAGE_STATE_ROOT', {
isShowBottomTab
});
next();
});
3、在footer的tab组件里面利用 computed 来获取store里面的 isShowBottomTab
computed: {
isShowBottomTab() {
return this.$store.state.isShowBottomTab;
},
},
4、然后在footer里面利用 v-show="isShowBottomTab" 就可以自动显示与隐藏footer
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答4.7k 阅读✓ 已解决
4 回答4.3k 阅读✓ 已解决
4 回答1.9k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
可以再详情组件中试用beforeRouteEnter钩子函数,