Upgrade to Pro — share decks privately, control downloads, hide ads and more …

複雑なコンポーネントで 状態をもつのをやめた話

複雑なコンポーネントで 状態をもつのをやめた話

Daisuke Mino

July 31, 2020
Tweet

More Decks by Daisuke Mino

Other Decks in Programming

Transcript

  1. やばいポイント1 例えば `isDragging` , `isHover` , `isScrolling` のような、ユーザー入力 によって状態が目まぐるしく変わるような状態を、複雑なコンポーネントを操作 する場合においては、状態を操作した場所が追いづらくなる。

    コンポーネントに閉じる状態ならばコンポーネント内のstateに閉じておけばよ いが、渡されたデータの状態フィールドに変更を加えつつ他のコンポーネント に伝達する場合を想定する。
  2. 状態 • selectedGroupIds: Set<string> • selectedUserIds: Set<string> • focusedIds: Set<string>

    • invalidIds: Set<string> • disabledIds: Set<string> • intersectingIds: Set<string>
  3. 構造 • idNode: Map<string, NodeFragment> • parentChildren: Map<string, Array<string>> •

    childParent: Map<string, string> • parentDescendants: Map<string, Array<string>> • childAncestors: Map<string, Array<string>> • rects: Map<string, Rect>