我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue3删除过滤器的原因

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue3删除过滤器的原因

什么是vue的过滤器

过滤器可以通俗理解成是一个特殊的方法,用来加工数据的

  • 比如枚举值可以使用过滤器:如 1 2 3 4 对应 成功 失败 进行中 已退回
  • 比如价格后面跟个过滤器,将价格格式化成小数点两位
  • 比如时间格式化等

详细请看官方文档

why?

笔者认为:原因就是vue3要精简代码,并且filter功能重复,filter能实现的功能,methods和计算属性基本上也可以实现。所以就干脆把filter这方面的vue源码给删掉,这样的话,更加方便维护。

举例分析

需求描述

假设我们有一个快递信息,后端返回给我们的并不是具体的状态值,而是对应的字符串1 2 3 4 5 6等,不同的状态有着一套对应

规则,比如状态为1是待发货等,具体效果图和状态对应关系如下图:

HTML结构和data数据如下


<template>
  <div id="app">
    <ul v-for="(item, index) in arr" :key="index">
      <li>快递公司:{{ item.deliverCompany }}</li>
      <li>运输状态:{{ item.expressState }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      arr: [
        {
          deliverCompany: "京东快递",
          expressState: "1",
        },
        {
          deliverCompany: "顺丰快递",
          expressState: "2",
        },
        {
          deliverCompany: "中通快递",
          expressState: "3",
        },
        {
          deliverCompany: "邮政快递",
          expressState: "4",
        },
        {
          deliverCompany: "极兔快递",
          expressState: "5",
        },
        {
          deliverCompany: "某某快递",
          expressState: null,
        },
      ],
    };
  },
};
</script>

使用filter实现

这里我们就不用全局filter了,使用组件内部的filter


<template>
  <div id="app">
    <ul v-for="(item, index) in arr" :key="index">
      <li>快递公司:{{ item.deliverCompany }}</li>
      <!-- 使用过滤器语法 -->
      <li>运输状态:{{ item.expressState | showState }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  // data ...... 篇幅有限直接省略掉
  // 在组件内定义,然后根据不同的状态返回不同的值内容
  filters: {
    showState(state) {
      switch (state) {
        case "1":
          return "待发货";
          break;
        case "2":
          return "已发货";
          break;
        case "3":
          return "运输中";
          break;
        case "4":
          return "派件中";
          break;
        case "5":
          return "已收货";
          break;
        default:
          return "快递信息丢失";
          break;
      }
    },
  },
};
</script>

使用computed实现


<template>
  <div id="app">
    <ul v-for="(item, index) in arr" :key="index">
      <li>快递公司:{{ item.deliverCompany }}</li>
      <!-- 使用计算属性 -->
      <li>运输状态:{{ computedText(item.expressState) }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  // data ...... 篇幅有限直接省略掉
  computed: {
    computedText() {
      // 计算属性要return一个函数接收参数
      return function (state) {
        switch (state) {
          case "1":
            return "待发货";
            break;
          case "2":
            return "已发货";
            break;
          case "3":
            return "运输中";
            break;
          case "4":
            return "派件中";
            break;
          case "5":
            return "已收货";
            break;
          default:
            return "快递信息丢失";
            break;
        }
      };
    },
  },
};
</script>

使用methods实现


<template>
  <div id="app">
    <ul v-for="(item, index) in arr" :key="index">
      <li>快递公司:{{ item.deliverCompany }}</li>
      <!-- 使用方法 -->
      <li>运输状态:{{ methodsText(item.expressState) }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  // data ...... 篇幅有限直接省略掉
  methods: {
    methodsText(state) {
      switch (state) {
        case "1":
          return "待发货";
          break;
        case "2":
          return "已发货";
          break;
        case "3":
          return "运输中";
          break;
        case "4":
          return "派件中";
          break;
        case "5":
          return "已收货";
          break;
        default:
          return "快递信息丢失";
          break;
      }
    },
  },
};
</script>

看到了叭,filter过滤器能加工数据,computed计算属性和methods方法也都可以加工数据,这样的话,就重复了...

总结

vue3删除了filter就好比:

员工filter会干的活,员工computed和员工methods也会干,而且比员工filter干得多,干的好。这样的话,老板vue就把filter开除了,filter就被fired了。毕竟多一个员工,多一些用工成本(员工filter哇的一声哭了出来)

以上就是vue3删除过滤器的原因的详细内容,更多关于vue3删除过滤器的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue3删除过滤器的原因

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用jquery怎么过滤被删除的元素

这篇文章给大家介绍使用jquery怎么过滤被删除的元素,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。jquery是什么jquery是一个简洁而快速的JavaScript库,它具有独特的链式语法和短小清晰的多功能接口、高
2023-06-14

mysql删除字段失败的原因有哪些

字段所属的表不存在:如果要删除的字段所属的表不存在,删除操作会失败。字段不存在:要删除的字段在所属的表中不存在,删除操作会失败。字段被其他字段引用:如果要删除的字段被其他字段或约束引用,删除操作会失败。例如,如果要删除的字段被一个外键约束引
mysql删除字段失败的原因有哪些
2024-04-09

浅析git pull命令删除文件的原因

在使用Git进行版本控制时,我们经常会使用git pull命令从服务器获取最新的代码,以保持本地代码库与服务器上的代码库同步。但是,有时候我们会使用git pull命令后,发现一些本地已经存在的文件被删除了。那么,这是怎么回事呢?在本文中,
2023-10-22

sql删除表数据失败的原因有哪些

SQL删除表数据失败的原因可能有以下几种:权限不足:如果用户没有足够的权限来执行删除操作,那么删除表数据将会失败。表被其他用户锁定:如果其他用户正在使用该表或正在执行与该表相关的操作,那么删除表数据将会失败。外键约束:如果该表有外键约束,并
sql删除表数据失败的原因有哪些
2024-04-09

MySQL删除用户不成功的原因有哪些

MySQL删除用户不成功的原因可能有以下几种:用户权限不足:只有具有相应权限的用户才能删除其他用户。用户不存在:尝试删除一个不存在的用户会导致删除失败。用户正在被使用:如果要删除的用户还有相关的数据库对象或正在被其他进程使用,则无法删除。语
MySQL删除用户不成功的原因有哪些
2024-04-09

MySQL删除了记录不生效的原因排查

线上的一次MySQL事务问题记录 上周五进行了一个大表删除的操作,在删除的过程中,出现了一点小问题,白白花费了两个小时,我这里记录了一下大概的过程,废话不多说了,直接看过程吧。 当时想进行删除,先测试了一下删除语句的语法,删了一条
2022-05-19

linux删除目录不成功的原因有哪些

Linux删除目录不成功的原因有以下几种:1. 目录权限不足:如果当前用户没有足够的权限,即使是目录的所有者也无法删除该目录。2. 目录非空:如果目录中包含文件或其他目录,则无法直接删除该目录。需要先删除目录中的所有内容,然后再删除目录本身
2023-08-23

java过滤器的工作原理是什么

Java过滤器的工作原理是基于Servlet规范中的过滤器接口(javax.servlet.Filter)来实现的。过滤器可以用于在请求到达目标servlet之前对请求进行预处理,也可以在响应返回客户端之前对响应进行后处理。具体工作原理如下
2023-08-26

Win7出现本地磁盘Q的原因及删除方法

我们都知道Win7系统的本地磁盘通常都是C、D、E、F盘,过多的对硬盘分区会造成容量的减少,如果是javascript插入U盘大部分会出现H盘或K盘,但是有些朋友的Win7系统上却莫名其妙的出现了Q盘,这是怎么回事呢?怎样才能将这个本地磁盘
2023-06-11

文件夹无法删除的原因以及解决方法

文件夹无法删除的原因通常有以下几种情况:1. 文件夹中包含正在使用的文件:如果文件夹中有正在运行的程序或被其他程序占用的文件,系统会阻止删除文件夹。解决方法是先关闭使用中的程序或释放文件的占用。2. 权限问题:如果当前用户没有足够的权限来删
2023-09-05

Java布隆过滤器的原理和实现分析

数组、链表、树等数据结构会存储元素的内容,一旦数据量过大,消耗的内存也会呈现线性增长所以布隆过滤器是为了解决数据量大的一种数据结构。本文就来和大家详细说说布隆过滤器的原理和实现,感兴趣的可以了解一下
2022-11-13

MySQL删除数据,表文件大小依然没变的原因

对于运行很长时间的数据库来说,往往会出现表占用存储空间过大的问题,可是将许多没用的表删除之后,表文件的大小并没有改变,想解决这个问题,就需要了解 InnoDB 如何回收表空间的。 对于一张表来说,占用空间重要分为两部分,表结构和表数据。通常
2022-05-20

编程热搜

目录