vue/cli 怎么实现由一个页面跳到一个页面,底部导航栏跳进有跳出没有

比如说从商品列表跳到详情页但是在详情页没有底部的导航栏,但是在返回到商品列表,下面的导航在次出现

涉及的知识点是组件的通信 子组件传信息到父组件是 this.$emit("",参数)  父组件传信息到子组件是在组件data外面写一个props:[''list"],跨组件通信用到了const bus =new Vue()  bus.$on() 这个是写在父父组件  bus.$emit()这个是写在子子组件里面的  

 

步骤:1,在src里面新建一个文件夹bus,在里面引入Vue文件 ,再创建bus实例 const bus=new Vue()

import  Vue  from "vue";

let  bus  = new Vue();

export  default  bus;

  

             2,App.vue引入这个文件

import bus from "./bus";

            3.在APP.vue写个v-show=flag flag=true  在created生命周期里面写这个bus.$on()

 

<template>
  <div class="box">
    <div class="menu" v-show="flag">
      <router-link to="/">首页</router-link>|
      <router-link to="/list">列表</router-link>|
      <router-link to="/myshoppingcar">购物车</router-link>|
      <router-link to="/mine">个人</router-link>
    </div>
    <router-view></router-view>
    <!-- 就是component :is -->
  </div>
</template>
<script>
import bus from "./bus";
export default {
  data() {
    return {
      flag: true,
    };
  },
  created() {
    bus.$on("changeFlag", (flag) => {
      //箭头函数 this指向
      console.log("执行");
      this.flag = flag;
    });
  },
};
</script>
<style scoped>
.menu {
  width: 100%;
  height: 40px;
  position: fixed;
  left: 0;
  bottom: 0;
  display: flex;
  background-color: blanchedalmond;
  z-index: 9999;
}
.menu a {
  flex: 1;
  text-align: center;
}
</style>

 

   4 在组件的mouted 和destroyed生命周期里面写这个bus.$emit()

 

posted @ 2021-08-21 18:06  JSkolo_yyds  阅读(142)  评论(0编辑  收藏  举报