Vue3中删除了过滤器filter功能-如何使用computed和methods实现filter功能

Posted JackieDYH

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue3中删除了过滤器filter功能-如何使用computed和methods实现filter功能相关的知识,希望对你有一定的参考价值。

使用computed和methods实现filter功能

案例演示 

基础代码

<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: "快递1",
          expressState: "1",
        ,
        
          deliverCompany: "快递2",
          expressState: "2",
        ,
        
          deliverCompany: "快递3",
          expressState: "3",
        ,
        
          deliverCompany: "快递4",
          expressState: "4",
        ,
        
          deliverCompany: "快递5",
          expressState: "5",
        ,
        
          deliverCompany: "快递6",
          expressState: null,
        ,
      ],
    ;
  ,
;
</script>

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() 
    return 
      ......
    ;
  ,
  // 在组件内定义,然后根据不同的状态返回不同的值内容
  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() 
    return 
      ......
    ;
  ,
  computed: 
    computedText() 
      // 计算属性要return一个函数接收参数
      return (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() 
    return 
      ......
    ;
  ,
  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>

Vue3删去了重复的功能,使用computed和methods也可以实现filter功能

以上是关于Vue3中删除了过滤器filter功能-如何使用computed和methods实现filter功能的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Django 过滤器中删除多余的点?

Servlet过滤器——创建过滤器

二十 Filter&自动登录功能

bootstrap-table 如何使用搜索和过滤?

如何在ListAPIView中使用django-filter对过滤结果进行排序

过滤和删除数组中的过滤元素