亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【學習打卡】第3天 圖標選擇器的二次封裝

课程名称:基于Vue3+Vite+TS,二次封装element-plus业务组件
课程章节:封装组件初级篇(上)
主讲老师:五月的夏天

课程内容:

今天学习的内容包括:
2-6 图标选择器-巧用两次watch控制弹框的显示与隐藏——外部传入属性与内部自有属性使用watch进行关联实现。
2-7 图标选择器-巧用component动态组件显示所有的图标——组件封装常用动态组件component。

课程收获:

图标选择器封装成组件,外部传参到组件中:

let props = defineProps<{
  // 弹出框的标题
  title: string,
  // 控制弹出框的显示与隐藏
  visible: boolean
}>()

此处控制弹出框显示与隐藏如果不使用组件内部自己的变量,则会导致显示隐藏诸多问题,在这里以我的经验可能会写一个关闭时触发emits(‘updata:visible’,false),老师这里采用了拷贝一份父组件传递过来的visible+watch,巧妙的解决了显示隐藏问题。
第一个watch监听外部传参visible,进行更改内部dialogVisible
第二个watch监听内部dialogVisible,进而updata:visible

// 拷贝一份父组件传递过来的visible
let dialogVisible = ref<boolean>(props.visible)
// 监听visible的变化
watch(() => props.visible, val=>{
  dialogVisible.value = val
})
watch(() => dialogVisible.value, val=>{
  emits('update:visible', val)
})

引入图标

import  * as ElIcons from '@element-plus/icons-vue'

使用 Object.keys() 遍历渲染

 <div class="container">
        <div
          class="item"
          v-for="(item, index) in Object.keys(ElIcons)"
          :key="index"
          @click="clickItem(item)"
        >
          <div class="text">
            <component :is="`el-icon-${toLine(item)}`"></component>
          </div>
          <div class="icon">{{ item }}</div>
        </div>
      </div>

当我们的字体图标组件名非常长会导致换行,此时就需要设置一个高度,让所有的item都显示一样的高度,这样看起来就比较美观了。

.item {
  width: 25%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  margin-bottom: 20px;
  cursor: pointer;
  height: 70px;
}

终于大工搞成,效果非常好。

下一步就是点击复制等交互效果了。今天学习就先到这里吧。

坚持打卡,坚持学习,未来可期,加油😀~

https://img1.sycdn.imooc.com//62ebd7540001455819200897.jpg

https://img1.sycdn.imooc.com//62ebdb7d0001d48a19200897.jpg

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消