#ecmascript-6 #react-hooks
Вопрос:
У меня есть код для изменения состояния с помощью React
const newArray = upfiles; newArray[i] = { ...upfiles[i], status: 'Ready' }; setUpfiles([...newArray]);
Интересно, можно ли это сделать в одну строку?
Комментарии:
1. Обратите внимание, что
newArray
на самом деле это не новый массив. Литерал массива[... …]
создает новый массив. Исправьте это сначала, прежде чем пытаться оптимизировать количество строк.2.
i
Гарантируется ли наличие индекса в массиве (т. е.gt;= 0
иlt; upfiles.length
)?
Ответ №1:
setUpfile(Object.values({...upfiles, [i]:{...upfiles[i], status: "Ready"}}))
Это должно выполнить работу в одной строке.
Также
setUpfile(upfiles.map((upfile, index) =gt; index === i ? {...upfile, status:"Ready"} : upfile))
должно сработать