zoukankan      html  css  js  c++  java
  • vue外卖四:抽取公共组件TopHeader——slot的使用、父传子值

    一、抽取公共组件TopHeader.vue

    1.从Msite.vue抽取头部标题到src/components/TopHeader/TopHeader.vue

    知识点1. 子组件接收父组件传值

    1. 模板内留下接收位置:
    <!--1.接收父组件传值,名为title-->
    <span class="header_title_text ellipsis">{{title}}</span>
    
    1. script设置接收值的类型,注意首字母大写
    //2.接收父组件传的值为title,类型为String
        props:{
          title:String
        }
    

    知识点2.留下插槽位置

    <!--3.插槽1,name:left-->
        <slot name="left"></slot>
         <!--4.插槽2,name:right-->
        <slot name="right"></slot>
    

    TopHeader.vue完整代码

    <!--首页头部-->
    <template>
      <header class="header">
      <!--3.插槽1,name:left-->
        <slot name="left"></slot>
        <span class="header_title">
        <!--1.接收父组件传值,名为title-->
          <span class="header_title_text ellipsis">{{title}}</span>
        </span>
        <!--4.插槽2,name:right-->
        <slot name="right"></slot>
      </header>
    </template>
    
    <script>
      export default {
      //2.接收父组件传的值为title,类型为String
        props:{
          title:String
        }
      }
    </script>
    
    <style lang="stylus">
      .header
        background-color #02a774
        position fixed
        z-index 100
        left 0
        top 0
        width 100%
        height 45px
        .header_search
          position absolute
          left 15px
          top 50%
          transform translateY(-50%)
          width 10%
          height 50%
          .icon-sousuo
            font-size 25px
            color #fff
        .header_title
          position absolute
          top 50%
          left 50%
          transform translate(-50%, -50%)
          width 50%
          color #fff
          text-align center
          .header_title_text
            font-size 20px
            color #fff
            display block
        .header_login
          font-size 14px
          color #fff
          position absolute
          right 15px
          top 50%
          transform translateY(-50%)
          .header_login_text
            color #fff
    </style>
    

    二.使用公共组件:父传子值,使用插槽

    1.msite.vue使用插槽,向子传值

    1)引入子组件,并挂载

    <script>
    import TopHeader from '../../components/TopHeader/TopHeader.vue'
    export default{
    	components:{
    		TopHeader,
    	}
    }
    </script>
    

    2)使用子组件,并传值,使用插槽

    1.把原header删除,改为如下,重点:0-2

    <!--首页头部-->
    		<!--0.用title向子组件传值-->
            <TopHeader title='首页-昌平区北七家宏福科技园(337省道北)'>
            <!--1.使用插槽:左-->
    	        <span class="header_search" slot='left'>
    	            <i class="iconfont icon-sousuo"></i>
    	        </span>
    	     <!--2.使用插槽:右-->
    	        <span class="header_login" slot='right'>
                	<span class="header_login_text">登录|注册</span>
              	</span>
            </TopHeader>
    

    2.search.vue使用topHeader

    <template>
    <section class="search">
          	<!-- 头部标题组件 -->
            <TopHeader title="搜索"/>
            略过...
    </template>
    
    <script>
    import TopHeader from '../../components/TopHeader/TopHeader.vue'
    export default{
    	components:{
    		TopHeader,
    	}
    }
    </script>
    
    注意:style内header相关样式别忘记删除
    

    3.order.vue/profile.vue同2,只title变动略过

    效果不变

  • 相关阅读:
    很久以前写的一个功能测试用例
    中外白领和无领的一天
    Five bugs in five minutes...
    Oracle SQL 性能优化技巧
    10款常用Java测试工具[转载]
    AJAX、AJAX实例及AJAX源代码(asp)
    各大银行的暗示[笑话]
    Tomcat集群与负载均衡(转载)
    简述CMMI2级的7个PA
    全面介绍单元测试 -转贴
  • 原文地址:https://www.cnblogs.com/chenxi188/p/13940371.html
Copyright © 2011-2022 走看看