<p><code>Record<TableId, TableState></code>オブジェクト(<code>type TableId = string;</code>)を使用しようとしています。ただし、<code>setTableStateMap(map)</code> でキーと値のペアを設定した後にレコード オブジェクトの内容を印刷すると、オブジェクト <code>{id: {… }} </code> 'id' 変数に渡した値の代わりに。 </p>
<pre class="brush:php;toolbar:false;">// App.tsx---------------------------- -- ----------
React.useEffect(() => {
setCallback((id: TableId, tableState: TableState) => {
const マップ: Record
= { id: tableState };
setTableStateMap(マップ);
});
// テーブルコンポーネント ----------------------------------
タイプ TableId = 文字列;
type Callback = (id: TableId, state: TableState) => void;
let コールバック: コールバック;
エクスポート関数 setCallback(callbackInput: Callback) {
コールバック = コールバック入力;
}
let stateMap: Record = {};
エクスポート関数 setTableStateMap(map: Record) {
stateMap = マップ;
}
インターフェース TableProps {
id?: テーブル ID;
}
エクスポート const テーブル: React.FC<TableProps> = ({
ID、
}) => {
let tableState: TableState | 未定義;
if (id) {
tableState = 状態マップ[id];
// stateMap のキーは変数 id の値ではなく 'id' に設定されます
// {id: {…}}
} それ以外 {
tableState = 未定義;
}
};</pre>
<p><br /></p>
{ id: tableState } のような中括弧を使用してオブジェクトを作成すると、文字列「id」は id 変数の動的値ではなく静的キーとして解釈されます。 JavaScript/TypeScript では計算されたプロパティ名を使用する必要があります。計算されたプロパティ名を使用すると、オブジェクトの作成時に動的な値をキーとして使用できます。
リーリー