背景:同事最近找我看一个bug,起因是我们公司产品中心写的公共的列表组件在新增数据保存的时候报错,错误如下
Invalid attempt to spread non-iterable instance(传播不可迭代的无效尝试)
查了下网上说很大可能是因为扩展运算符出错导致的,我也比较倾向于这种解释,但是产品中心这个组件已经用了挺长时间了,之前也没出现过这种问题
所以我猜测是今年项目上做数据库转换导致的问题(ps:今年可能处于业务考虑,公司把之前mongodb+mysql的存储方式改成了全部由关系型数据库(mysql/达梦)来存储业务数据)。于是我跟了下这份组件的代码,我写一下大概得出错部分的逻辑
onAdd(context){ //context是传到组件里的新增列表的一行数据,{id:'123456',name:'zhangsan',...}
let value = _.get(this,"props,value",[]) // -value是当前页面这个列表的数据(在数据保存前,不包括新增数据)
let list = [] //这是想最终的得到的列表数据 主要思路就是当前页面的数据,加上新增的数据,组装完回显到页面,思路简单明了清晰
list = [...value]
list.push(context)
}
然后在这里定位到了问题,value是个null,于是乎扩展运算符报错了
因为之前没看loadsh里的方法介绍,我是在项目上学到的这种_.get()的用法 所以很疑惑为什么对于没有数据的值_.get()没有返回空数组,然后我就给加了个value对于null值的判断解决了这个问题。
于是乎今天看了下loadsh官网的方法描述,人家写的很清楚
还得学呀!
标签:get,value,_.,loadsh,组件,数据 From: https://www.cnblogs.com/-217/p/17936303.html