` を管理する層では、データの変更がUIに伝播する際の競合を厳格に型定義で防ぐ必要があります。
/
- 行のメタデータを表現する型定義
- 非同期データ取得時の「読み込み中」や「エラー」状態も行の型に含めるのが設計のコツ
/
type RowStatus = ‘idle’ | ‘loading’ | ‘error’ | ‘syncing’;
interface TableRowMetadata {
id: string;
data: T;
status: RowStatus;
version: number; // 楽観的ロック用のバージョン管理
}
/
/
interface TableRowProps {
metadata: TableRowMetadata;
onUpdate: (id: string, partial: Partial) => Promise;
}
// React等のコンポーネント内では、このメタデータを利用してレンダリングを最適化する
const DataRow = ({ metadata, onUpdate }: TableRowProps) => {
// メモ化により、不要な行の再レンダリングを阻止
// React.memoの比較関数をカスタムして、ステータス変更時のみ再描画させるのがベスト
return (
コメント