为了账号安全,请及时绑定邮箱和手机立即绑定

关于和后端对接数据,空值判断的问题

关于和后端对接数据,空值判断的问题

慕斯王 2019-03-07 14:49:43
大家在拿到后端的数据,要绑到页面上的时候,空值判断一般是怎么处理的?比如说前端要一个List,Array类型,但后端没查到,你想着会给你个[],但就给你返回个null,这就导致前端取length的时候就报错了,难道每次都要写if判断吗?if (res.list !== null) {    this.list = res.list;}请问有什么干净效率的办法?
查看完整描述

8 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

跟后端说,不许返回null。他不干就揍他,你要是打不过,就乖乖加判断


查看完整回答
1 反对 回复 2019-03-15
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

假如后端返回res对象,res.body希望是个数组,但是实际返回一个null


那么在不考虑深复制浅复制问题的前提下


let newArray = res.body || []


console.log(newArray.length)

这样至少可以保证不会得到null


查看完整回答
反对 回复 2019-03-15
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

可以写成这样,this.list = res.list || []。


查看完整回答
反对 回复 2019-03-15
?
交互式爱情

TA贡献1712条经验 获得超3个赞

有一种能比这种有效率一点,三目运算符,还加了一个空值的显示。{{ list!=null?list:"-" }}
或者说如果都没数据,就不显示这部分,那么可以<template v-if="list!=null?true:false">你的内容</template>

查看完整回答
反对 回复 2019-03-15
?
四季花海

TA贡献1811条经验 获得超5个赞

后端输出json类型数据,前端js把json字符串解析为js对象(JSON.parse()),若是空,那不就自动获取到了[]或{},我是这样认为的


查看完整回答
反对 回复 2019-03-15
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

//我是这么写的

//数组 前者可判断为null,后者为[]

if( !res.list || res.list.length == 0 ) return;

.... //要做的事情

//对象格式 {"status":0,"data":{"books":null,"total":"0"},"message":""}

if( !res || res.message == false) return;

.... //要做的事情  

 


查看完整回答
反对 回复 2019-03-15
?
慕村9548890

TA贡献1884条经验 获得超4个赞

需要根据业务逻辑来确定再向下走下去不正交(也就是会对其他地方有影响)那么立即阻止,否则就像你说的,只是单纯的数据类型变化了,可以根据场景自己写个util嘛,接6大数据类型,根据数据格式的不同还可以扩展(比如blob类型等等), validateDataType(String,var,(err)=>{}) 如果是多层嵌套判断值的存在, throw Error || callback 都可以呀,推荐使用类似 loadsh 里面的get解决,.

永远记住一个道理,不经过抽象的代码就像一盘散沙,积累的越多,到时候你收拾的越麻烦。。千万不能每个地方写if


查看完整回答
反对 回复 2019-03-15
  • 8 回答
  • 0 关注
  • 1173 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信