• vue2 减少if else 等判断的出现


    介绍两种vue2和js配合使用方法的案例,让我们的代码更加灵活

    与、或、非

    最简单的方法使用 与、或、非,和 !! 等优化逻辑

    switch/case

    场景适合时,使用 switch/case 代替 if/else

    1. switch (day) {
    2. case 0:
    3. dayText = '日';
    4. break;
    5. case 1:
    6. dayText = '一';
    7. break;
    8. case 2:
    9. dayText = '二';
    10. break;
    11. // ...........
    12. default:
    13. break;
    14. }

    三目表达式配合方法或接口

    首先运行括号内的三目表达式,判断是否是新数据,是的话调用新增接口,否则调用更新,这两句很简单但是非常实用,能减少不少的冗余代码,并且逻辑更加明确

    (this.isNew ? create : update)(this.data).then(res => {...})

    但是缺点也很明显,比如我们有更多的可能判断后需要三个或以上的接口,此方法就不太适用了

    map

    通过提前设置好各个情况对应的值,再使用 get() 来获取对应的值,在之前我也介绍过map和set

    map/set

    直接使用对象

    首先大家都知道组件中定义 data 是函数形式,不是普通对象,并且在这个 data 中可以直接使用this.方法

    1. data(){
    2. return{
    3. num:this.getNum
    4. }
    5. },
    6. created(){ console.log(this.num) }
    7. methods: {
    8. getNum(){ console.log(1) }
    9. }

     在created中打印一下这个 data 中的 num

     

    这个函数中的 this 的指向是当前vue实例,因为 Vue 通过 data.call(vm, vm) 调用 data 函数

    注意:在data中使用this的使用可以访问到 props 中的值 因为props是比data初始化快的,但是在data中的this不能访问data中的值 比如定义一个 a ,不能再 定义一个 b: this.a,b将会是 undefined

    知道了以上的知识,我们可以定义一个类似于枚举的对象,其中 对应三种选择情况,调用接口

    1. getList: {
    2. 'A': [ 方法/接口, 'topName'],
    3. 'B': [ 方法/接口, 'name'],
    4. 'C': [ 方法/接口, 'bottomName']
    5. }

    在我使用请求对应的接口时,分别需要一个 参数的 不同key值 ,相同的值

    1. activeList(title) {
    2. const query = { // 公共参数
    3. 'pageNum': this.pageNum,
    4. 'pageSize': this.pageSize,
    5. }
    6. query[this.getList[title][1]] = this.value // 单独参数
    7. return this.getList[title][0](query) // 返回请求
    8. },
    9. getNewData(title) {
    10. this.activeList(title).then(res => {
    11. // 处理数据
    12. })
    13. },

    拆分一下方便我们维护,这样写主要是能减少大量的 if else 等,判断的出现

  • 相关阅读:
    Java基础汇总(关于锁)
    逍遥自在学C语言 | 指针函数与函数指针
    el-menu 导航栏学习-for循环封装(2)
    (附源码)ssm教学成绩管理系统 毕业设计 282029
    Spring Boot应用部署 - Tomcat容器替换为Undertow容器
    GD32F103 硬件SPI通信
    AI识万物:从0搭建和部署手语识别系统 ⛵
    (c/c++)——STL
    微服务——Ribbon的两三事
    BroadcastChannel方法跨浏览器窗口通信
  • 原文地址:https://blog.csdn.net/paidaboluo/article/details/126319765