Как снять новое значение с существующего массива с оператором распространения? - PullRequest
2 голосов
/ 05 апреля 2019

Я пытаюсь unshift значение массива с существующим массивом с использованием подхода оператора распространения.получаю ошибку.кто-нибудь поможет мне получить правильный подход?

вот мой код:

uploadedFiles : [...state.uploadedFiles.unshift( (<fileActions.UploadFileSuccess>action).payload ) ]

получаю ошибку как:

The Number is not array type

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 05 апреля 2019

unshift мутирует массив и возвращает новую длину массива, которая является числом и не может быть расширена.Ваш код сводится к:

 [...state.uploadFiles.length]

Теперь, чтобы сделать это неизменным и правильным способом, не используйте unshift, просто добавьте элемент в массив перед распространением предыдущей версии:

 [action.payload, ....state.uploadFiles]
4 голосов
/ 05 апреля 2019

Array#unshift возвращает новую длину массива.

Вам нужно просто взять предмет без распространения.

uploadedFiles: [(<fileActions.UploadFileSuccess>action).payload, ...state.uploadedFiles]

Если вы хотите обновить state.uploadedFiles, вы можете unshift заранее.

state.uploadedFiles.unshift((<fileActions.UploadFileSuccess>action).payload);

uploadedFiles: [...state.uploadedFiles]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...