报错内容如下:
错误信息的意思是:未在_callee类型错误捕获:传播非迭代实例的尝试无效
出现当前问题的原因:数据格式解析错误,可能在应该使用 {}
的时候使用了 []
,在应该使用 []
的时候使用了 {}
。
index.js:1 uncaught at _callee TypeError: Invalid attempt to spread non-iterable instance
at _nonIterableSpread (http://localhost:8001/umi.js:10179:9)
at _toConsumableArray (http://localhost:8001/umi.js:10354:60)
at save (http://localhost:8001/p__Channel__AreaAdd__models__getAllUserRoleList.js.async.js:65:329)
at http://localhost:8001/umi.js:15329:14
at http://localhost:8001/umi.js:15343:14
at Array.reduce (<anonymous>)
at http://localhost:8001/umi.js:15342:21
at http://localhost:8001/umi.js:15356:12
at combination (http://localhost:8001/umi.js:72234:29)
at dispatch (http://localhost:8001/umi.js:72470:22)
at http://localhost:8001/umi.js:70420:22
at http://localhost:8001/umi.js:14811:18
at http://localhost:8001/umi.js:64719:18
at dispatch (http://localhost:8001/umi.js:72025:18)
at http://localhost:8001/umi.js:71944:12
at http://localhost:8001/umi.js:70948:52
at exec (http://localhost:8001/umi.js:71625:5)
at flush (http://localhost:8001/umi.js:71666:5)
at asap (http://localhost:8001/umi.js:71639:5)
at runPutEffect (http://localhost:8001/umi.js:70945:25)
at runEffect (http://localhost:8001/umi.js:70894:184)
at next (http://localhost:8001/umi.js:70774:9)
at currCb (http://localhost:8001/umi.js:70847:7)
报错了要仔细查看报错信息,寻找关键点,当前log的关键信息是前四行:
第一行(概括信息):传播非迭代实例的尝试无效;
第二行_nonIterableSpread
:不是可迭代的扩展;
第三行_toConsumableArray
:位于可消耗的数组;
第四行(报错点):在p__Channel__AreaAdd__models__getAllUserRoleList.js
目录文件下的save
方法中。
由以上四行信息可以得出确切的出错地点以及原因:
在目录Channel/AreaAdd/models下的getAllUserRoleList.js文件中有一个save方法,在save方法中对数组进行了非法的可迭代扩展。
大概就是上面的意思,说白了就是你的数据结构错误。同一个数据,后台返回的是对象,在这里使用了数组接收,然后页面显示数据时又使用了对象的形式解构赋值,就报错了,但是我发现页面的数据显示好像不受影响,还是显示了,难缠哦…
下面是我出错的地方:
// getAllUserRoleList.js
reducers: {
save(state, action) {
const { payload } = action;
return [ ...state, ...payload ]; // 错误
}
}
修改为以下结构就不报错了:
// getAllUserRoleList.js
reducers: {
save(state, action) {
const { payload } = action;
return { ...state, ...payload }; // 正确
}
}