vue3刪除過濾器的原因
什么是vue的過濾器
過濾器可以通俗理解成是一個特殊的方法,用來加工數(shù)據(jù)的
- 比如枚舉值可以使用過濾器:如 1 2 3 4 對應(yīng) 成功 失敗 進(jìn)行中 已退回
- 比如價格后面跟個過濾器,將價格格式化成小數(shù)點兩位
- 比如時間格式化等
詳細(xì)請看官方文檔
why?
筆者認(rèn)為:原因就是vue3要精簡代碼,并且filter功能重復(fù),filter能實現(xiàn)的功能,methods和計算屬性基本上也可以實現(xiàn)。所以就干脆把filter這方面的vue源碼給刪掉,這樣的話,更加方便維護(hù)。
舉例分析
需求描述
假設(shè)我們有一個快遞信息,后端返回給我們的并不是具體的狀態(tài)值,而是對應(yīng)的字符串1 2 3 4 5 6等,不同的狀態(tài)有著一套對應(yīng)
規(guī)則,比如狀態(tài)為1是待發(fā)貨等,具體效果圖和狀態(tài)對應(yīng)關(guān)系如下圖:
HTML結(jié)構(gòu)和data數(shù)據(jù)如下
<template> <div id="app"> <ul v-for="(item, index) in arr" :key="index"> <li>快遞公司:{{ item.deliverCompany }}</li> <li>運(yùn)輸狀態(tài):{{ 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實現(xiàn)
這里我們就不用全局filter了,使用組件內(nèi)部的filter
<template> <div id="app"> <ul v-for="(item, index) in arr" :key="index"> <li>快遞公司:{{ item.deliverCompany }}</li> <!-- 使用過濾器語法 --> <li>運(yùn)輸狀態(tài):{{ item.expressState | showState }}</li> </ul> </div> </template> <script> export default { // data ...... 篇幅有限直接省略掉 // 在組件內(nèi)定義,然后根據(jù)不同的狀態(tài)返回不同的值內(nèi)容 filters: { showState(state) { switch (state) { case "1": return "待發(fā)貨"; break; case "2": return "已發(fā)貨"; break; case "3": return "運(yùn)輸中"; break; case "4": return "派件中"; break; case "5": return "已收貨"; break; default: return "快遞信息丟失"; break; } }, }, }; </script>
使用computed實現(xiàn)
<template> <div id="app"> <ul v-for="(item, index) in arr" :key="index"> <li>快遞公司:{{ item.deliverCompany }}</li> <!-- 使用計算屬性 --> <li>運(yùn)輸狀態(tài):{{ computedText(item.expressState) }}</li> </ul> </div> </template> <script> export default { // data ...... 篇幅有限直接省略掉 computed: { computedText() { // 計算屬性要return一個函數(shù)接收參數(shù) return function (state) { switch (state) { case "1": return "待發(fā)貨"; break; case "2": return "已發(fā)貨"; break; case "3": return "運(yùn)輸中"; break; case "4": return "派件中"; break; case "5": return "已收貨"; break; default: return "快遞信息丟失"; break; } }; }, }, }; </script>
使用methods實現(xiàn)
<template> <div id="app"> <ul v-for="(item, index) in arr" :key="index"> <li>快遞公司:{{ item.deliverCompany }}</li> <!-- 使用方法 --> <li>運(yùn)輸狀態(tài):{{ methodsText(item.expressState) }}</li> </ul> </div> </template> <script> export default { // data ...... 篇幅有限直接省略掉 methods: { methodsText(state) { switch (state) { case "1": return "待發(fā)貨"; break; case "2": return "已發(fā)貨"; break; case "3": return "運(yùn)輸中"; break; case "4": return "派件中"; break; case "5": return "已收貨"; break; default: return "快遞信息丟失"; break; } }, }, }; </script>
看到了叭,filter過濾器能加工數(shù)據(jù),computed計算屬性和methods方法也都可以加工數(shù)據(jù),這樣的話,就重復(fù)了...
總結(jié)
vue3刪除了filter就好比:
員工filter會干的活,員工computed和員工methods也會干,而且比員工filter干得多,干的好。這樣的話,老板vue就把filter開除了,filter就被fired了。畢竟多一個員工,多一些用工成本(員工filter哇的一聲哭了出來)
以上就是vue3刪除過濾器的原因的詳細(xì)內(nèi)容,更多關(guān)于vue3刪除過濾器的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Vue全局事件總線$bus安裝與應(yīng)用小結(jié)
這篇文章主要介紹了Vue全局事件總線$bus安裝與應(yīng)用,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-09-09vue-router清除url地址欄路由參數(shù)的操作代碼
這篇文章主要介紹了vue-router清除url地址欄路由參數(shù),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2015-11-11vue.js?自定義指令(拖拽、拖動、移動)?指令?v-drag詳解
這篇文章主要介紹了vue.js?自定義指令(拖拽、拖動、移動)?指令?v-drag,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01