我正在尝试使用扩展运算符方法将unshift
与现有数组一起使用。遇到错误。有人可以帮助我找到正确的方法吗?
这是我的代码:
uploadedFiles : [...state.uploadedFiles.unshift( (<fileActions.UploadFileSuccess>action).payload ) ]
得到一个错误:
The Number is not array type
谢谢。
答案 0 :(得分:4)
Array#unshift
返回数组的新长度。
您只需要拿走物品而不散开。
uploadedFiles: [(<fileActions.UploadFileSuccess>action).payload, ...state.uploadedFiles]
如果您想更新state.uploadedFiles
,则可以提前unshift
。
state.uploadedFiles.unshift((<fileActions.UploadFileSuccess>action).payload);
uploadedFiles: [...state.uploadedFiles]
答案 1 :(得分:4)
unshift
对数组进行突变,并返回数组的新长度,该长度是一个数字,并且不能扩展。您的代码可以归结为:
[...state.uploadFiles.length]
现在要以一种不变且正确的方式进行操作,不要使用unshift,只需在扩展先前版本之前将元素添加到数组中即可。
[action.payload, ....state.uploadFiles]