javascript - Hur man lägger till ett nytt värde i början av en befintlig array med spridningsoperatorn?
Jag försöker unshift ett arrayvärde med en befintlig array genom att använda spread-operatorn. Får ett fel. Kan någon hjälpa mig att få rätt tillvägagångssätt?
här är min kod :
uploadedFiles : [...state.uploadedFiles.unshift( (<fileActions.UploadFileSuccess>action).payload ) ]
får ett fel som:
The Number is not array type
Tack i förväg.
Svar #1
unshift ändrar arrayen och returnerar den nya längden på arrayen, vilket är ett nummer, och det kan inte spridas. Din kod kokar ner till:
[...state.uploadFiles.length]
Nu för att göra det på ett oföränderligt och korrekt sätt, använd inte unshift, lägg bara till elementet i arrayen innan du sprider den föregående versionen:
[action.payload, ....state.uploadFiles]
Svar #2
Array#unshift returnerar arrayens nya längd.
Du behöver bara ta föremålet utan att sprida.
uploadedFiles: [(<fileActions.UploadFileSuccess>action).payload, ...state.uploadedFiles]
Om du vill uppdatera state.uploadedFiles, kan du unshift i förväg.
state.uploadedFiles.unshift((<fileActions.UploadFileSuccess>action).payload);
uploadedFiles: [...state.uploadedFiles]
