宣言的UIの振る舞いを分割する単位はページなのか機能なのか
これはkoushisa.iconの経験上でも当てはまる
UXを重視するほどページという単位での設計は責務が肥大化して破綻しやすい 機能ごとに固有のステートやロジックを露出させたくない organisms = ドメインのネームスペース的な
code:tsx
export const CustomersPage = () => <CustomersTemplate/>
export const CustomersTemplate = () => <CustomersRoot/>
// 顧客検索画面のorganisms的な
export const CustomersRoot = () => {
return (
<>
// 顧客検索(フィルタとか)
<CustomersSearcher />
// 顧客一覧(テーブル)
<CustomersList />
</>
)
}
機能固有のステートはなるべくコンポーネントのローカルステートに押し込めるイメージ
機能をまたいだステートが必要なときはRootの中でローカルステートを使いつつ各コンポーネントのpropsに流し込む
2022/11
GA, Sentryみたいな通知系もろもろを機能本体と疎結合にしたいとか
イベント駆動のためのReduxはややオーバーと感じる 機能間で共通する処理は共通化と抽象化に留意した上で適切に移譲すればok 最近はあまり共通化を考えずにパッケージごとに独立させるモジュラモノリス的な思考かも