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 };  // 正確
    }
  }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章