React UI


React造形方法論


React+スタイリングツールリスト



CSS Module

  • class、idなどにランダム文字列(hash)が追加されているので、選択者が重なる心配はありません.
  • 様式衝突防止、コード隔離、システム化CSS設計
  • 造形は自分で一つ一つ作らなければなりません.
  • CSSモジュール例

    // App.jsx
    import styles from "./app.module.css";
    
    export default function App() {
      return (
        <div>
          <h1 className={styles.title}>Pin Hello world</h1>
          <h1 className={"title"}>Nomal Hello world</h1>
        </div>
      );
    }
    /* app.module.css */
    h1 {
      font-size: 1.5rem;
    }
    .title {
      font-size: 2.5rem;
      color: palevioletred;
    }

    UI framework (ex. Ant Design, Material UI)

  • 既製で使いやすい
  • はすでにできていて、造形を学ぶ必要がある初心者には
  • はお勧めしません.
  • フレームワークの設計理念から抜け出すのは難しい
  • 素子
  • のカスタマイズが困難である.

    UIフレームワークの例

    // App.jsx
    import "antd/dist/antd.css";
    import { Button } from "antd";
    
    export default function App() {
      return (
        <div>
          <Button type="primary">Primary Button</Button>
          <Button type="secondary">Secondary Button</Button>
          <Button type="danger">Danger Button</Button>
        </div>
      );
    }

    CSS framework (ex. W3CSS, TailwindCSS)

  • 巨大CSSファイル
  • をインポート
  • 開発者はCSSファイルを作成する必要がなく、クラスをHTMLに書き込むだけで、規定のルールに従ってスタイル
  • を適用することができる.
  • CSSを知っていても、このフレームワークの使い方を再学習する必要があります.
  • はすでにできていて、造形を学ぶ必要がある初心者には
  • はお勧めしません.

    CSS-in-JS library (ex. styled component , emotion)

  • CSSファイルを作成することなくJSXファイルでモデリングの問題を解決できる
  • 素子
  • の再利用が容易である.
  • JS値をpropsに渡すことで、JS値によるスタイル化
  • を即座に適用することができる.
  • クラス名にはランダム文字列が生成されるので、セレクタ名
  • を上書きする必要はありません.
  • 造形は開発者一人一人が完成することを要求し、
  • CSS入力JSライブラリ(styledcomponent)例

    import styled from "styled-components";
    
    const Title = styled.h1`
      font-size: 1.5rem;
      text-align: center;
      color: palevioletred;
    `;
    
    export default function App() {
      return <Title>Hello World</Title>;
    }

    JavaScript template literal

  • string text ${expression} string text
  • 簡単に言えば、
  • は、JS式を文字列で利用できる構文である.
  • const string = "James";
    const message = `hello ${string}`;
    
    console.log(message);
    // "hello James"

    JavaScript template literal with number

    const number = 12345;
    const message = `hello ${number}`;
    
    console.log(message);
    //  "hello 12345"

    JavaScript template literal with boolean

    const boolean = true;
    const message = `hello ${boolean}`;
    
    console.log(message);
    //  "hello true"

    JavaScript template literal with object

    const object = { a: "apple" };
    const message = `hello ${object}`;
    
    console.log(message);
    //  "hello [object Object]"

    3値演算子付きJavaScript template literal(3つの演算子)

    const name = "chalie";
    const gender = "male";
    const message = `Hello ${
      gender === "male" ? "Mr." : "Mrs."
    }${name}, nice to meet you`;
    
    console.log(message);
    // "Hello Mr.chalie, nice to meet you"
    よく復習します!
    プロジェクトの対比の角度から見ると、私たちはプロジェクトの前にした思想反応の授業を勉強していて、今週が終わってから良い結果を提出しましょう.🙏 + ノードの授業も聞きます.