View を定義する単位
対応するイベントやバリデーションは一つの View に定義しましょう
バリデーション、 AxTableLayout
の自動レイアウトや isLoading
などの処理は View の単位で処理されます。そのため対応するフィールドごとに View を定義する必要があります。
以下に悪い実装例、良い実装例を示します。
❌ 対応する Event と Item を別々の View で定義しない
// ItemのみのViewを定義
export type InputTodoView = CsView & {
title: CsInputTextItem;
description: CsTextAreaItem;
assignee: CsInputTextItem;
};
// EventのみのViewを定義
export type TodoCreateView = CsView & {
createButton: CsMutateButtonClickEvent<
{
data: TodoRegistration; // titleやdescription,assigneeのプロパティをもつ型
},
Todo
>;
};
✅ 対応するフィールドでひとつの View を定義する
export type TodoCreateView = CsView & {
title: CsInputTextItem;
description: CsTextAreaItem;
assignee: CsInputTextItem;
createButton: CsMutateButtonClickEvent<
{
data: TodoRegistration; // titleやdescription,assigneeのプロパティをもつ型
},
Todo
>;
};
また、対応する Item のコードを自動補完によって直感的に記述することができるメリットがあります。