vue3 实现自定义指令 v-loading(基于 ant design 的 spin 组件实现)

文章描述了如何使用Vue在不干扰原有样式的情况下,通过动态创建`Spin`组件实现加载时的遮罩效果,同时确保在组件挂载和更新时的正确操作。

想法: 本来是想简单的通过对指令的绑定节点设置相对定位然后在其子级创建loading组件覆盖原有元素,但考虑到强制改变节点样式可能对原有样式产生干扰,于是有了新的想法。

/**
 * 方框内添加loading UI提示
 * 自定义属性传入boolean数据类型进行控制
 */

import { render, h } from 'vue'
import { Spin } from 'ant-design-vue';
const mount = (el: HTMLElement): void => {
  let parent: HTMLElement | null = el.querySelector('#__LOADING_PARENT__')
  if (!parent) {
    parent = document.createElement('div')
    parent.style.position = 'relative'
    parent.style.alignSelf = 'flex-start'
    parent.id = '__LOADING_PARENT__'
    if (el.firstChild) {
      el.insertBefore(parent, el.firstChild)
    } else {
      el.appendChild(parent)
    }
  }
  parent.style.opacity = '1'
  const elStyle = window.getComputedStyle(el, null)
  const style = {
    display: 'flex',
    alignItems: 'center',
    justifyContent: 'center',
    position: 'absolute',
    flexDirection: 'column',
    top: `-${elStyle.paddingTop}`,
    left: `-${elStyle.paddingLeft}`,
    width: `${el.clientWidth}px`,
    height: `${el.clientHeight}px`,
    backgroundColor: 'rgba(255, 255, 255, .5)',
    opacity: 1,
    zIndex: 1000
  }
  render(h(Spin, { class: 'directive-loading', tip: '加载中...', size: 'large', style }), parent)
}
const unmount = (el: HTMLElement) => {
  const loading: HTMLElement | null = el.querySelector('#__LOADING_PARENT__')
  if (loading && loading.parentNode === el) {
    el.removeChild(loading)
  }
}
export default {
  // 在绑定元素的父组件 及他自己的所有子节点都挂载完成后调用
  mounted: (el: HTMLElement, binding: any) => {
    binding.value && mount(el)
  },
  // 在绑定元素的父组件 及他自己的所有子节点都更新后调用
  updated: (el: HTMLElement, binding: any) => {
    setTimeout(() => {
      binding.value ? mount(el) : unmount(el)
    })
  }
}

<think>好的,用户想在荣耀平板V9 Pro电脑模式下安装PyCharm。首先,我需要确认荣耀平板V9 Pro的操作系统是什么。根据之前的引用信息,用户提到的安装教程有MAC、WindowsLinux的,但平板通常是基于Android系统的。过,电脑模式可能类似于桌面环境,比如华为的EMUI电脑模式,可能还是基于Android的,而是Windows或Linux。 接下来,PyCharm是否有官方的Android版本?根据已知信息,JetBrains官网提供的PyCharm有Windows、macOSLinux版本,没有提到Android支持。因此,在Android设备上直接安装PyCharm可能可行。 用户可能需要通过其他方法,比如使用远程桌面连接到PC,或者在平板上安装Linux系统,再安装PyCharm。但荣耀平板V9 Pro是否支持安装Linux呢?这需要查看设备的硬件系统是否允许。或者,用户可能考虑使用Termux这样的Android终端模拟器,安装Python环境,但PyCharm作为IDE可能需要图形界面支持,这在Termux中可能比较复杂。 另外,用户提到电脑模式,可能平板连接了键盘鼠标,模拟桌面操作。但即使如此,Android系统本身支持直接运行PyCharm。可能需要寻找替代方案,比如使用在线IDE,或者通过云开发环境访问PyCharm。 根据引用[4],在Linux下安装PyCharm需要下载Linux版本,解压并运行脚本。如果用户能在平板上安装Linux系统,可能可行,但这对普通用户来说难度较大。或者,使用类似UserLAnd的App在Android上运行Ubuntu,然后按照引用[4]的步骤安装PyCharm。 结可能的步骤:1. 确认设备是否支持Linux环境;2. 安装Linux系统或使用模拟器;3. 下载Linux版PyCharm并安装;4. 配置Python解释器。但这个过程复杂,可能适合所有用户。因此,可能需要建议替代方案,如使用在线IDE或远程开发。</think>在荣耀平板V9 Pro电脑模式下安装PyCharm需注意以下要点: 1. **系统兼容性确认** PyCharm官方仅支持Windows/macOS/Linux系统,而荣耀平板V9 Pro电脑模式基于Android系统,**无法直接安装原生PyCharm**。需通过以下替代方案实现: 2. **替代方案一:远程开发** - 在PC端安装PyCharm并启用远程访问[^2] - 平板上安装远程桌面工具(如Microsoft Remote Desktop)连接PC - 通过PC运行PyCharm,平板作为显示终端操作 3. **替代方案二:Linux环境模拟** 使用Termux+Proot部署Linux子系统(如Ubuntu): ```bash pkg install proot-distro proot-distro install ubuntu proot-distro login ubuntu apt install wget tar wget https://download.jetbrains.com/python/pycharm-community-2023.2.1.tar.gz tar -xzf pycharm-*.tar.gz cd pcharm-*/bin && ./pycharm.sh ``` 此方法需手动配置X11图形服务[^4] 4. **替代方案三:在线IDE** 使用CodeWithMe、Gitpod或Replit等云端开发环境,通过浏览器直接编程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值