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

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

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

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

Avatar for Daisuke Mino

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>