前端 10 年經(jīng)驗常用的接口各種數(shù)據(jù)類型容錯寫法

前端 10 年經(jīng)驗常用的接口各種數(shù)據(jù)類型容錯寫法,保證前端頁面不炸掉

今天一個下拉框渲染,接口返回了[null, null, null]導致頁面崩了

<el-select

? v-model="currentEditRow.approverNumbers"

? placeholder="請選擇"

? clearable

? style="width:100%"

? @change="approverNumbersChange"

>

? <el-option

? ? v-for="item in safeNodeList"

? ? :key="item.approverNumber"

? ? :label="item.approverName"

? ? :value="item.approverNumber"

? />

</el-select>

解決辦法: this.nodeList = (res.data || []).filter(Boolean)

最保險寫法:

const formatNodeList = list =>

? (Array.isArray(list) ? list : [])

? ? .filter(Boolean)

? ? .map(item => ({

? ? ? approverName: item.approverName || '',

? ? ? approverNumber: item.approverNumber || ''

? ? }))

借此機會就梳理一下各種數(shù)據(jù)類型的兜底寫法

1、數(shù)組類型兜底

接口可能返回null、undefined、{}、[null, null]

兜底寫法:this.nodeList = Array.isArray(res.nodeList) ? res.nodeList.filter(Boolean) : []

2、對象類型兜底

接口可能返回null、undefined

兜底寫法:this.detail = res.detail || {}

3、?對象內字段類型兜底

接口可能返回防止 undefined

兜底寫法:const name = res.name || ''

4、可以寫在公共方法里的兩個兜底方法

export const safeArray = (arr = []) => Array.isArray(arr) ? arr.filter(Boolean) : []

export const safeObject = (obj = {}) => obj || {}

使用方法:

this.nodeList = safeArray(res.nodeList)

this.detail = safeObject(res.detail)

5、一定要記住,接口數(shù)據(jù)永遠不要直接用,一定先:

接口返回 → 數(shù)據(jù)清洗 → 頁面使用

基本思路:

數(shù)組 → safeArray

對象 → safeObject

字段 → || 默認值

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容