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 };