簡體   English   中英

數組中的散布操作出錯。 TS1005:“,”應為。 打字稿

[英]Error with spread operation in array. TS1005: ',' expected. TypeScript

我無法弄清在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
  )

您無法通過spread操作以這種方式對array內的某些element突變。 使用這種方法,您將每次都將一個新的,變異的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,
  };
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM