uncaught at _callee TypeError: Invalid attempt to spread non-iterable instance

报错内容如下:
错误信息的意思是:未在_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 };  // 正确
    }
  }

你可能感兴趣的:(antd,js,spread,non-iterable,invalid,antd)