亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue后臺中優(yōu)雅書寫狀態(tài)標簽的方法實例

 更新時間:2021年08月02日 15:29:44   作者:8號的凌晨4點  
在Vue中,我們可以非常便捷地通過標簽實現(xiàn)狀態(tài)的保存,這篇文章主要給大家介紹了關(guān)于Vue后臺中如何優(yōu)雅的書寫狀態(tài)標簽的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

前言

在后臺系統(tǒng)開發(fā)中,對于列表,常常有一些狀態(tài)字段的展示,比如審核狀態(tài)、退貨申請狀態(tài)等等,并且往往伴隨有狀態(tài)篩選的列表查詢條件,同時狀態(tài)顯示對應(yīng)不同顏色,在寫代碼時有些人往往是這么做的:

<template>
  <el-form :model="query">
    <el-form-item label="審批狀態(tài)" prop="status">
      <el-select v-model="query.status" clearable>
        <el-option
          v-for="item in statusOptions"
          :key="item.value"
          :label="item.label"
          :value="item.value"
        />
      </el-select>
    </el-form-item>
    <el-form-item>
      <el-button type="primary">查詢</el-button>
      <el-button type="danger">重置</el-button>
    </el-form-item>
  </el-form>
  <el-table :data="list">
    <el-table-column label="審批狀態(tài)">
      <template #default="{ row }">
        <el-tag v-if="row.status === 0" type="primary">審核中</el-tag>
        <el-tag v-if="row.status === 1" type="success">審核成功</el-tag>
        <el-tag v-if="row.status === 2" type="danger">審核失敗</el-tag>
      </template>
    </el-table-column>
  </el-table>
</template>
export default {
  data() {
    return {
      query: {
          status: null
      },
      statusOptions: [
          { label: '審核中', value: 0 },
          { label: '審核成功', value: 1 },
          { label: '審核失敗', value: 2 }
      ],
      list: []
    }
  }
}

以上代碼雖然是實現(xiàn)了需求,但卻顯得不夠優(yōu)雅,代碼維護成本較高:

  • 標簽里充斥著較多的 v-if 且與 data 里的數(shù)據(jù)重復,造成冗余。
  • 當有新增或修改時,需要改動多個地方,例如要改動文案時下拉框和表格里的都要改。
  • 如果是多個頁面都有該狀態(tài)需要顯示,復制粘貼,最后當需求變動時勢必會增加改動成本。

優(yōu)化

針對上面的問題,咱們通過以下措施來進行搶救。

抽離變量

建立常量文件存放 statusOptions,增加 el-tag 組件的 type 字段來區(qū)分顯示不同的顏色,最后將其導出。

// const/index.js
// 審核狀態(tài)
const statusOptions = [
  { label: '審核中', value: 0, type: 'primary' },
  { label: '審核成功', value: 1, type: 'success' },
  { label: '審核失敗', value: 2, type: 'danger' }
]

export {
  statusOptions
}

二次封裝 el-tag 組件

// components/stats-tag.vue
<template>
  <el-tag :type="getValue('type')">
    {{ getValue('label') }}
  </el-tag>
</template>
export default {
  name: 'StatusTag',
  
  props: {
    options: {
      type: Array,
      required: true,
      default: () => []
    },
    status: {
      type: [String, Number],
      required: true
    }
  },
  
  computed: {
    getValue({ options, status }) {
      return (key) => {
        const item = options.find(e => e.value === status)
        return (item && item[key]) || ''
      }
    }
  }
}

使用

<template>
  <el-form :model="query">
    <el-form-item label="審批狀態(tài)" prop="status">
      <el-select v-model="query.status" clearable>
        <el-option
          v-for="item in statusOptions"
          :key="item.value"
          :label="item.label"
          :value="item.value"
        />
      </el-select>
    </el-form-item>
    <el-form-item>
      <el-button type="primary">查詢</el-button>
      <el-button type="danger">重置</el-button>
    </el-form-item>
  </el-form>
  <el-table :data="list">
    <el-table-column label="審批狀態(tài)">
      <template #default="{ row }">
        <!-- 使用 -->
        <status-tag 
          :options="statusOptions"
          :status="row.status"
        />
      </template>
    </el-table-column>
  </el-table>
</template>
import StatusTag from '@/components/status-tag'
// 導入
import { statusOptions } from '@/const'

export default {
  components: {
    StatusTag
  },
  
  data() {
    return {
      statusOptions
    }
  }
}

經(jīng)過優(yōu)化后,如果有修改變動,只需要改動 const/index.js 文件即可,無需到處修。

// const/index.js
// 審核狀態(tài)
const statusOptions = [
  { label: '審核中', value: 0, type: 'primary' },
  { label: '審核成功', value: 1, type: 'success' },
  { label: '審核失敗', value: 2, type: 'danger' },
  // 增加取消狀態(tài)
  { label: '審核取消', value: 3, type: 'warning' }
]

export {
  statusOptions
}

總結(jié)

到此這篇關(guān)于Vue后臺中優(yōu)雅書寫狀態(tài)標簽的文章就介紹到這了,更多相關(guān)Vue書寫狀態(tài)標簽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue項目如何引入公共頭部底部

    vue項目如何引入公共頭部底部

    這篇文章主要介紹了vue項目如何引入公共頭部底部問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue中格式化時間過濾器代碼實例

    vue中格式化時間過濾器代碼實例

    這篇文章主要介紹了vue格式化時間過濾器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Vite打包分割代碼的詳細過程記錄

    Vite打包分割代碼的詳細過程記錄

    項目創(chuàng)建Vite是一個web開發(fā)構(gòu)建工具,由于其原生ES模塊導入方法,它允許快速提供代碼,下面這篇文章主要給大家介紹了關(guān)于Vite打包分割代碼的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Vue子組件調(diào)用父組件方法案例詳解

    Vue子組件調(diào)用父組件方法案例詳解

    這篇文章主要介紹了Vue子組件調(diào)用父組件方法案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • vue的Virtual Dom實現(xiàn)snabbdom解密

    vue的Virtual Dom實現(xiàn)snabbdom解密

    這篇文章主要介紹了vue的Virtual Dom實現(xiàn)- snabbdom解密,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • vue3.x使用swiper實現(xiàn)卡片輪播

    vue3.x使用swiper實現(xiàn)卡片輪播

    這篇文章主要為大家詳細介紹了vue3.x使用swiper實現(xiàn)卡片輪播,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Vue3搭建組件庫開發(fā)環(huán)境的示例詳解

    Vue3搭建組件庫開發(fā)環(huán)境的示例詳解

    這篇文章給大家分享Vue3搭建組件庫開發(fā)環(huán)境,給大家講解依次搭建組件庫、example、文檔、cli,本文內(nèi)容是搭建組件庫的開發(fā)環(huán)境的過程,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • Vue?Mock.js介紹和使用與首頁導航欄左側(cè)菜單搭建過程

    Vue?Mock.js介紹和使用與首頁導航欄左側(cè)菜單搭建過程

    Mock.js是一個模擬數(shù)據(jù)的生成器,用來幫助前端調(diào)試開發(fā)、進行前后端的原型分離以及用來提高自動化測試效率,這篇文章主要介紹了Vue?Mock.js介紹和使用與首頁導航欄左側(cè)菜單搭建,需要的朋友可以參考下
    2023-09-09
  • VueQuillEditor富文本上傳圖片(非base64)

    VueQuillEditor富文本上傳圖片(非base64)

    這篇文章主要介紹了VueQuillEditor富文本上傳圖片(非base64),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • vue滾動軸插件better-scroll使用詳解

    vue滾動軸插件better-scroll使用詳解

    這篇文章主要為大家詳細介紹了vue滾動軸插件better-scroll的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10

最新評論