• Vue把常用 【组件提取】 出来后使用【插槽把父元素】传入【组件中】


    简介:

    通常我们会把比较重复的标签提取到组件中使用,这样的好处是我们不需要编写重复代码,只需要引入对应组件即可,还有就是如果对通用的组件进行添加新元素,引用的组件也会有相同效果,如果是每个页面都写了重复的代码,哪天产品提新需求添加效果时,那你只能一个一个页面进行更改

    该界面需要提取组件如图:

    在这里插入图片描述

    如图所示:
    下拉刷新这个功能应该是非常常见的吧,如果我单独在获取用户地址这里加下拉刷新,那我下一个开发的界面是购物车界面是不是也需要下拉刷下页面发送请求获取最新数据呢?索性我们直接吧下拉刷新提取成一个组件使用,以后有需要我们就引入公共的下拉组件

    使用的是Vant 一个轻量、可靠的移动端组件库里面的下拉刷新组件
    在这里插入图片描述
    下拉调用该方法
    在这里插入图片描述

    首先明确需要准备那些:

    1. 需要把下拉刷新的组件提取成单独的页面
    2. 使用插槽slot标签表示父组件的元素
    3. 使用props中定义父页面传递的刷新方法

    按照步骤走:

    1.组件提取成单独页面(提取组件)

    在组件目录下创建,一般组件目录叫components
    在这里插入图片描述

    模板代码:

    <template>
      <van-pull-refresh
          v-model="isLoading"
          success-text="刷新成功"
          @refresh="onRefresh"
          style="overflow:visible"
      >
        <!-- 使用插槽slot 这个代表组件内父元素会表示在slot标签中  -->
        <slot></slot>
      </van-pull-refresh>
    </template>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    js代码:

    <script>
    import { PullRefresh } from 'vant';
    export default {
      props:{
        // 接口请求列表的方法
        refresh: {
          //定义成函数,用于传递父类的方法
          type: Function,
          required: true,
        },
      },
      components: {
        PullRefresh
      },
      data() {
        return {
          //加载状态
          isLoading:false
        };
      },
      computed:{
      },
      methods: {
        onRefresh() {
          //调用组件方法内的父类方法,用于刷新数据
          this.refresh();
          //刷新完成后关闭刷新界面
          this.isLoading=false;
          console.log("父方法调用完成后改变状态",this.isLoading)
        },
      },
    };
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    2.父页面引用组件

    script标签中添加,导入组件的位置

    import PullRefresh from '@/views/components/PullRefresh/index';
    
    • 1

    在这里插入图片描述

    模板代码中添加组件

        <PullRefresh
            :refresh="onRefresh"
        >
          <!--下面的内容会在组件的插槽中展示      -->
          <AddressList v-if="list.length" :list="list"/>
          <van-empty v-else class="empty" :description="listEmptyText"></van-empty>
          <!--可以是任何元素...-->
    
        </PullRefresh>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    上面的解析:

    :refresh会绑定下拉刷新组件中的propsrefresh对象并且他的类型是需要接收父组件传递的方法
    在这里插入图片描述

    在这里插入图片描述
    父页面传递到下拉刷新组件中的onRefresh方法
    在这里插入图片描述

    3.查看效果

    下拉刷新完成后,也获取到后端数据了
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    RDD行动算子和血缘关系
    【Uva】10976-Fractions Again?!
    Qt天气预报系统之JSON
    SourceInsight添加对汇编语言文件.s和.S的支持
    Matlab回归分析
    【正点原子I.MX6U-MINI应用篇】8、嵌入式Linux网络通信socket编程
    Dapr 和 Spring Cloud 对比分析
    DataGrip 2023:让数据库开发变得更简单、更高效 mac/win版
    BERT和ChatGPT简单对比
    1055 The World‘s Richest
  • 原文地址:https://blog.csdn.net/qq_45502336/article/details/126332221