为了账号安全,请及时绑定邮箱和手机立即绑定

【学习打卡】第5天 图标选择器的二次封装

标签:
Vue.js

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

课程内容:

今天学习的内容包括:
2-10 省市区选择组件-利用 github 获取到省市区数据——国内省市区完整数据。
2-11 省市区选择组件-巧用 watch 来达到三级联动效果——watch 和 computed 有不同的使用场景。
2-12 省市区选择组件-完善省市区联动组件并给父组件分发事件——封装组件必然有抛出和引入。

课程收获:

省市区数据的获取:

github上可以搜索得到比较完整的数据,可以直接下载使用。

实现省市区联动

1、首先引入下载下来的数据
2、绑定省市区字段,通过 watch 进行市区数据的重新赋值,使用 computed 本身是计算得来,无法进行计算再赋值,故而使用 watch
3、巧用ES6中 ! 和 ? 进行数据的判断,可节省大量判断或三目代码

  import allAreas from '../lib/pca-code.json'
  
  // 监听选择省份
  watch(
    () => province.value,
    (value) => {
      if (value) {
        selectCity.value = areas.value.find(
          (item) => item.code === province.value
        )!.children!
      }
    }
  )

完善省市区联动

1、给省市区下拉加入删除和筛选功能,此处使用 element-plus 提供的 clearable 和 filterable,大大挺好用户体验

<el-select clearable filterable placeholder="请选择省份" v-model="province">
   <el-option
     v-for="item in areas"
     :key="item.code"
     :value="item.code"
     :label="item.name"
   />
 </el-select>

2、在 watch 中加入数据变化对应的处理

  watch(
    () => province.value,
    (value) => {
      ...
      city.value = ''
      area.value = ''
    }
  )

3、给数据添加 interface

 export interface AreaItem {
    code: string
    name: string
    children?: AreaItem[]
  }

4、对组件的 change 进行 emits

 watch(
    () => area.value,
    (value) => {
     ...
      emits('change', {
        province: provinceData,
        city: cityData,
        area: areaData
      })
    }
  )

整体效果非常不错,学习到了一些好的方法和语法,跟着老师的思维,提升自己的思考方式,提升自己的代码质量。

下一步就是学习利用app.use特性全局注册组件的封装和完成作业了。今天学习就先到这里吧。

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

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

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

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

0 评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消