Ошибка при распространении в массиве.TS1005: ',' ожидается.Машинопись - PullRequest
0 голосов
/ 07 декабря 2018

Я не могу понять, что я пропустил в строке row.sections[SECTION_ID.Это всегда показывает мне ошибку опечатки ',' ...

FAQ: 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 ]

0 голосов
/ 12 декабря 2018

Вы не можете таким образом изменить некоторые параметры 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
)
0 голосов
/ 07 декабря 2018

Если вы пытаетесь заменить элемент по определенному индексу массива, не изменяя массив, вы можете сделать поверхностную копию массива, а затем установить значение этого индекса.Например:

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,
  };
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...