指尖上的记忆指尖上的记忆
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub

vue3组件使用技巧:

//有如下自组件,假如为 Child.vue
withDefaults(
  defineProps<{
    isOverflowVisible?: boolean;
  }>(),
  {
    isOverflowVisible: false,
  }
);
  
  <TModal
    v-model="isModalVisible"
    :max-width
    class="app-modal [&_.m-modal\_\_panel]:gap-md"
    :class="{
      'app-modal--visible': isOverflowVisible,
    }"
    :hide-close-icon
    :persistent
  >
  ...
  ...
  </TModal>

  <style lang="scss">
    .app-modal {
      &--visible {
        .m-modal__panel {
          @apply overflow-visible;
        }
      }
    }
</style>
  
//父组件使用
<template>

<Child is-overflow-visible>

</Child>

</template>
  
这里直接使用 is-overflow-visible, 而没有定义相关的变量(比如定义一个 isOverflowVisible, 用来赋值, 类似 :is-overflow-visible=isOverflowVisible),这样的话子组件里的 isOverflowVisible 会渲染为 true, 这是一个很有用的细节,对于一个 bool 类型的 prop,如果父组件没有通过属性赋值,那么会被熏染为 true.
  
上面的例子还有一个细节,就是:
:class="{
      'app-modal--visible': isOverflowVisible,
    }"
  
这个主要是动态加载 app-modal--visible 这个类,注意命名,有个前缀 app-modal, 后面是 --visible, 这种风格的命名,有个好处是,在scss文件里,可以实现样式嵌套,如下:
  <style lang="scss">
    .app-modal {
      &--visible {// 这里虽然有两级,但是实际上还是改的父级样式, 这个主要是用于动态修改同级元素的样式的时候; 也可以用于子元素, 当子元素也以相同的前缀开始的话,在样式里就可以直接使用过 & 开头定义样式
        .m-modal__panel {
          @apply overflow-visible;
        }
      }
    }
</style>