loading组件封装原理

以vue3为例,采用ts 的语言

首先可对所需数据定义在接口中

interface Prop{ //核心所需的就是   lading:boolean    ,type: 'lading' | 'skeleton'}

进行调用

封装的话采用的是插槽

    <div v-if="loading"  >
     <slot name="template">
        <div v-if="type === 'loading'">
            <VanLoading></VanLoading>
        </div>
        <div v-if="type === 'skeleton'">
            <VanSkeleton :row="10" ></VanSkeleton>
            <VanSkeleton avatar :row="5"></VanSkeleton>
            <!-- <VanSkeleton :row="5"></VanSkeleton> -->
        </div>
     </slot>   
  
    </div>
    <slot v-else></slot>

vant组件需要引用

骨架屏官网查看  Vant 4 - A lightweight, customizable Vue UI library for mobile web apps.

组件的使用

    <组件名  :loading="pending" type="skeleton"> </组件名 >

loading采用的布尔值在调用的时候可以和变量相联合使用

比如调用接口实话数据可以采用包裹的形式

包装成一个函数的形式进行  export   里面return一个promise函数等等

比如pending采用ref(false)  函数进行时进行修改

比较需要注意的时一个参数赋值为T 时会有类型的校验,需要进行断言处理

说到这里的话就提一下webpack里面的tree-shaking进行片段处理的时候不能处理commonjs模块里的因为他里面的require 和module.exports是动态引入的

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的示例: ```javascript import { useState, useEffect } from "react"; const useLoading = (loadingComponent) => { const [isLoading, setIsLoading] = useState(false); useEffect(() => { return () => { setIsLoading(false); }; }, []); const showLoading = () => { setIsLoading(true); }; const hideLoading = () => { setIsLoading(false); }; const LoadingIndicator = () => { return isLoading ? loadingComponent : null; }; return [LoadingIndicator, showLoading, hideLoading]; }; export default useLoading; ``` 这个 hook 接受一个 loading 组件作为参数,返回一个数组,包含了一个 LoadingIndicator 组件和两个函数 showLoading 和 hideLoading。 使用示例: ```javascript import React from "react"; import useLoading from "./useLoading"; import Loading from "./Loading"; const MyComponent = () => { const [LoadingIndicator, showLoading, hideLoading] = useLoading( <Loading /> ); const handleClick = () => { showLoading(); // 模拟一个异步操作 setTimeout(() => { hideLoading(); }, 2000); }; return ( <div> <button onClick={handleClick}>点击加载</button> <LoadingIndicator /> </div> ); }; export default MyComponent; ``` 在上面的示例中,我们使用 useLoading hook 将一个普通的 Loading 组件封装成了一个可以在 MyComponent 组件中调用的 LoadingIndicator 和 showLoading/hideLoading 函数。在 handleClick 函数中,我们调用 showLoading 函数显示 LoadingIndicator,然后模拟一个异步操作,2s 后调用 hideLoading 函数隐藏 LoadingIndicator。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值