P粉7148900532023-08-16 09:07:01
當你使用類似 { id: tableState } 的大括號來建立物件時,字串 "id" 被解釋為靜態鍵,而不是 id 變數的動態值。你需要在 JavaScript/TypeScript 中使用計算屬性名稱。計算屬性名稱允許你在建立物件時使用動態值作為鍵。
// App.tsx--------------------------------------- React.useEffect(() => { setCallback((id: TableId, tableState: TableState) => { const map: Record<TableId, TableState> = { [id]: tableState }; // 在这里使用计算属性名 setTableStateMap(map); }); // Table Component------------------------------- // ... your other imports and code export const Table: React.FC<TableProps> = ({ id, }) => { let tableState: TableState | undefined; if (id) { tableState = stateMap[id]; // 现在这将正确地使用动态 id 访问值 } else { tableState = undefined; } // ... rest of your component code };