Ошибка при распространении в массиве. TS1005: ',' ожидается. Машинопись
Я не могу понять, что я пропустил на линии row.sections[SECTION_ID
, Это всегда показывает мне опечатку ','...
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ:
sections
- это массив сobjects
внутри. В этом случае я пытаюсь изменить конкретный объект из разделов, основанных с помощью пользовательского флага SECTION_ID.
PS
Я тоже пытался поставить row.sections[SECTION_ID]
внутри дополнительные скобки []
, но, к сожалению, это не помогает... Есть решения?
rows: state.rows.map(
row =>
row.ID === action.rowID
? {
...row,
sections: [
...row.sections,
row.sections[SECTION_ID]: { // error is here
...row.sections[SECTION_ID],
data: {
...// some data
}
}
]
}
: row
)
2 ответа
Вы не можете изменить некоторые element
внутри array
от spread
операция таким образом. Используя этот подход, вы добавите новый, мутированный element
к тому же array
каждый раз. Итак, если вы хотите сделать это правильно, вам нужно использовать map
итератор вместо:
rows: state.mymaps.rows.map(
row =>
row.ID === action.rowID
? {
...row,
sections: row.sections.map(
(section, index) =>
index === JOIN_SECTION_ID
? {
...section,
data: {
...section.data
}
} : section
)
} : row
)
Если вы пытаетесь заменить элемент по определенному индексу массива, не изменяя массив, вы можете сделать поверхностную копию массива, а затем установить значение этого индекса. Например:
state.rows.map((row) => {
if (rowID !== action.rowID) {
return row;
}
const sectionCopy = [...row.sections];
sectionCopy[SECTION_ID] = {
...row.sections[SECTION_ID],
data: {
// some data
},
};
return {
...row,
sections: sectionCopy,
};
});