TIL-211129

6715 ワード

Component Design


コンポーネント別に開発

  • CDD: Component Driven Development
  • 部品単位でUIコンポーネントを作成する方式
  • 企画者がページ計画を立て、デザイナーと開発者に伝えて共同開発を行う
  • ページが完成すると、他のページに適用されるボタンの計画書が届く
  • このボタンが完了ページに適用されたボタンと同じボタンを使用するように要求された
  • ページを開発する際にUIコンポーネント単位で開発すれば、その部分を導入・使用することで解決できる
  • 例リンク:Storybook - BBC
  • 素子UI開発ツール:素子ブラウザ
  • 各構成部品を個別に表示可能
  • 一度に1つの素子しか処理できない
  • アナログ用に素子を自動可視化
  • 主な機能
  • UI素子をカタログ化
  • 素子変化をStoriesとして保存
  • 開発ツールの経験を提供し、例えばホットモジュールの再ロード
  • 反応層を含む複数のレイヤーをサポート
  • Shopify Polaris:部品開発参考庫
  • JavaScriptメソッドのCSS


  • 構造的にCSSを記述する方法の発展と原因を理解する.

  • Styled-Componentライブラリを使用すると、コンポーネントベースのCSSを作成できます.

  • UseRef Hookを利用してDOM Referenceを利用することができます.

  • 構造化CSS作成方法の発展
  • なぜ構造化CSSが必要なのか
    -インターネットが誕生して以来、技術の発展に伴い、様々な環境(設備)が使用され始め、CSSの作成方式も発展しています.

    -プロジェクトの規模と複雑さが増加し、チーム数も増加
    -より効率的なCSSの構築が必要
  • CSS構造化の多様な試み
  • CSSフロントプロセッサ
  • 代表的SASS
  • CSS方法
  • コードの再利用
  • コードの簡略化(保守可能)
  • コードの拡張性
  • コードの予測性(クラス名別)
  • BEM(Block, Element, Modifier)
  • クラス名の記入方法
  • JSでのCSS
    -CSSを構成部品領域に導入して構成部品ベースの方式を実現し、パッケージの重要性
    - Styled-Component
    -UIを機能またはステータスコンポーネントから完全に分離して使用できる簡単なモードを提供します.
  • Styled-Component


  • CSSからJS応答ライブラリへ

  • Reactのコンポーネントベースの開発環境でCSSモデリングを行うための最もポピュラーなライブラリ

  • Automatic critical CSS
    Styled Componentは、画面でレンダリングされた構成部品を追跡し、これらの構成部品にスタイルを自動的に挿入します.したがって、コードを適切に割り当てることで、ユーザーがアプリケーションを使用するときに、画面に最小限のコードしか表示されないことを保証できます.

  • No class name bugs
    Styled Componentは独自のclassNameを作成します.これにより、classNameの重複またはエラーによるエラーを低減できます.

  • Easier deletion of CSS
    CSSファイルでclassNameを検索して、無効または削除された構成部品に対応するスタイルプロパティを削除する必要があります.ただし、Styled Componentのすべてのスタイル属性は特定の構成部品に関連付けられているため、構成部品を使用せずに削除すると、スタイル属性も削除されます.

  • Simple dynamic styling
    これは、classNameを手動で管理する必要がなく、Reactのpropsまたはグローバル属性に基づいて構成部品にスタイル属性を付与する単純で直感的です.

  • Painless maintenance
    他のCSSファイルを検索するために継承スタイルから構成部品への属性を検索する必要がないため、コードが大きくなっても維持は難しくありません.

  • Automatic vendor prefixing
    各構成部品に既存のCSSを使用するスタイル属性を定義するだけでいいです.その他はStyled Componentで処理します.
  • useRef

  • DOM referenceを使用したreact hook
  • const 주소값을_담는_그릇 = useRef(참조자료형)
    // 이제 주소값을_담는_그릇 변수에 어떤 주소값이든 담을 수 있습니다.
    return (
        <div>
          <input ref={주소값을_담는_그릇} type="text" />
            {/* React에서 사용 가능한 ref라는 속성에 주소값을_담는_그릇을 값으로 할당하면*/}
            {/* 주소값을_담는_그릇 변수에는 input DOM 엘리먼트의 주소가 담깁니다. */}
            {/* 향후 다른 컴포넌트에서 input DOM 엘리먼트를 활용할 수 있습니다. */}
        </div>
      );
    
    function TextInputWithFocusButton() {
      const inputEl = useRef(null);
      const onButtonClick = () => {
        inputEl.current.focus();
      };
      return (
        <>
          <input ref={inputEl} type="text" />
          <button onClick={onButtonClick}>Focus the input</button>
        </>
      );
    }