ReactでCSSをエレガントに書く方法

ReactでCSSをエレガントに書く方法

1. インラインスタイル

利点: この方法は比較的シンプルで明確であり、タグにスタイル属性を追加します。

デメリット: この方法では、プロジェクト構造が肥大化し、CSS の名前付けの競合が発生する可能性があります。

React をインポートします。{ コンポーネント } を 'react' からインポートします。
'prop-types' から PropTypes をインポートします
エクスポートデフォルトクラスインデックスはComponentを拡張します{
    静的プロパティタイプ = {
     タイトル: PropTypes.文字列
    }
    与える() {
        const h1Style={textAlign:'center',marginBottom:'20px',lineHeight:'35px',
        高さ:'30px'}
        const {title} = this.props
        戻る (
         <div>
             <h1 style={h1Style}>{タイトル}</h1>
             <hr/>
         </div>
        )
    }
}

2. インポート方法を使用する

利点: この方法は、CSSの外部導入と同様に、より柔軟に使用できます。

デメリット: Reactスタイルはデフォルトでグローバルなので、スタイルの競合が発生する可能性がある

使用方法: 新しい CSS ファイルを作成し、jsx 構文の className 属性を使用してクラス名を設定し、CSS でクラス名を使用します。このメソッドでは、変数を定義して三項式を使用してクラス名を選択できます。

React をインポートします。{ コンポーネント } を 'react' からインポートします。
「./index.css」をインポートします
エクスポートデフォルトクラスインデックスはComponentを拡張します{
    状態={
        フラグ:true
    }
色の変更=()=>{
    this.setState((状態、プロパティ)=>{
        戻る {
           フラグ:!state.flag
        }
    })
}
    与える() {
        const {flag} = this.state
        戻る (
            <div>
                <h1 className={flag?'blueColor':'redColor'}>髪が白くなるまで待たないでください</h1>
                <button onClick={this.changeColor} className="btnStyle">クリックしてフォントの色を変更します</button>
            </div>
        )
    }
}

.blueColor{
    色: 青;
}
.redColor{
    色: 赤;
}
.btnスタイル{
    幅: 260ピクセル;
    高さ: 50px;
    背景色: 水色;
    色: #fff;
    境界線:なし;
    フォントサイズ: 28px;
    境界線の半径: 10px;
}

3.cssモジュールのエクスポート

利点: 名前の競合がなく、スタイルはローカルでのみ有効です

デメリット: 面倒すぎる。モジュールは毎回インポートおよびエクスポートする必要があり、これはすべての CSS クラス名をオブジェクトの属性として扱うのと同じです。オブジェクト属性が必要な場合は、オブジェクト属性を呼び出してクラス名を呼び出します。CSS の競合を解決する方法は、Vue でスタイルにモジュールを設定するのと同様に、異なるクラス名にプレフィックスを追加することです。

使用:

  • CRAスキャフォールディングでは、CSSスタイルが親コンポーネントに導入されている限り、このスタイルはグローバルスタイルになります。
  • モジュール性を利用してReactのスタイルの競合を解決する
  • craスキャフォールディングでは、スタイルファイルをモジュール化する必要がある場合は、スタイルファイルにxx.module.css/xx.module.scssという名前を付けます。

「react」からReact、{FC、useState}をインポートします。
「@/components1/cmittem」からCmittemをインポートします。
「./cmtlist.module.scss」から cssObj をインポートします。
定数コマンドリスト:FC<{}>=(props)=>{
    戻る (
        <div>
             <h1 className={cssObj.title}>コメントリスト</h1>
       
       </div>
    )
}

デフォルトの Cmtlist をエクスポートする

4. スタイル付きコンポーネントを使用する

利点: テンプレート文字列タグ + スタイルの組み合わせは、大文字で始まるコンポーネントです。たとえば、React 開発で最も人気のある記述方法のいくつかを統合していると言えます。React 開発者にとって、これは非常に良いスタートです。そのため、React コンポーネントでは、開発者によって外部 CSS またはコンポーネント CSS を使用する習慣が異なります。

使用:

styled-componentsをインストールする必要がある

npm i styled-components または yarn add styled-components

簡単に書けるvscodeインストールプラグイン

4.1 初回使用

'antd/dist/antd.less' をインポートします
'styled-components' から styled をインポートします
関数App() {
 const HomeWrapper = styled.div`
 フォントサイズ:50px;
 色:赤;
 スパン{
   色:オレンジ;
   &。アクティブ{
      色:緑;
   }
   &:ホバー{
     色:青;
     フォントサイズ:40px;
   }
   &::後{
     内容:'ssss'
   }
   }
 `
  戻る (
    <div className="アプリ">
 <h1>私はタイトルです</h1>
 <ホームラッパー>
 <h2>私はサブタイトルです</h2>
   <span>カルーセル 1</span>
   <span className="active">カルーセル 2</span>
   <span>カルーセル 3</span>
   <span>カルーセル 4</span>
 </ホームラッパー>
    </div>
  );
}

デフォルトのアプリをエクスポートします。

4.2 attrs による属性の設定

'antd/dist/antd.less' をインポートします
'styled-components' から styled をインポートします
関数App() {
 const ChangeInput = styled.input.attrs({
   プレースホルダー:'wangsu',
   bgColor:'赤'
 })`
 背景色:#7a7ab4;
 色:${props=>props.bgColor}
 `
  戻る (
    <div className="アプリ">
 <h1>私はタイトルです</h1>
 <ChangeInput タイプ="テキスト"/>
    </div>
  );
}

デフォルトのアプリをエクスポートします。

4.3 CSS継承

React をインポートします。{ コンポーネント } を 'react' からインポートします。
'styled-components' から styled をインポートします
const HYbutton = styled.button`
   色:赤;
   境界線:1px実線 #ccc;
   パディング:10px 20px;
`
//ここでは継承を使用します const XLbutton = styled(HYbutton)`
背景色:青;
`
デフォルトクラス Button をエクスポートし、Component を拡張します {

    与える() {
        戻る (
            <div>
                <HYbutton>これはボタンです</HYbutton>
                <XLbutton>これは継承されたボタンです</XLbutton>
            </div>
        )
    }
}

最近、プロジェクトを開発するときにこの方法を使用しています。とても斬新な感じがします。コミュニティでは議論がありますが、個人的にはこの CSS 設定方法が気に入っています。グローバル スタイルの問題をまったく考慮する必要がありません。

以上がReactでCSSをエレガントに書く方法の詳細です。ReactでCSSを書く方法の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Amap を使用した React 実装例 (react-amap)
  • Reactの仮想DOMとdiffアルゴリズムの詳細な説明
  • ファイルのアップロードの進行状況を示す React の例
  • React で遅延読み込みを使用して最初の画面の読み込み時間を短縮する方法
  • WeChat公式アカウントでReactプロジェクトを実行する方法
  • 最も単純な ErrorBoundary コンポーネントをカプセル化して、React 例外を処理する
  • React Fiber構造の作成手順
  • React の 3 つの主要属性における Ref の使用に関する詳細な説明
  • Reactのようなフレームワークをゼロから作成する
  • React useEffect の理解と使用

<<:  Windows Server 2012 または 2016 でディスクなしで .NET Framework 3.5 をインストールできない問題に対する完璧なソリューション

>>:  MySQL の一般的な SQL ステートメントの概要

推薦する

タグのhref属性とonclickイベントの使用例

a タグは主にページ ジャンプを実装するために使用され、これは href 属性または onclick...

MySQL 5.7.18 のインストール中に MySQL サービスの起動に失敗する問題の解決策

MySQL は非常に強力なリレーショナル データベースです。しかし、初心者の中には、インストールや設...

Node.jsはSTMPプロトコルとEWSプロトコルに基づいてメールを送信します

目次1 STMP プロトコルに基づいてメールを送信する Node.js メソッド2 MS Excha...

Linux 時間サブシステムの時間表現例の詳細な説明

序文Linux カーネルでは、元のコードとの互換性を保つため、または特定の仕様に準拠するため、また現...

Linux で tcpdump コマンドを使用してデータ パケットをキャプチャおよび分析する方法の詳細な説明

序文tcpdump はよく知られたコマンドライン パケット分析ツールです。 tcpdump コマンド...

MySQL sql_mode の使用に関する詳細な説明

目次序文sql_mode の説明最も重要なオプションすべてのオプション要約する序文前回の記事「MyS...

JavaScript オブジェクトの組み込みオブジェクト、値型、参照型の説明

目次物体オブジェクト定義オブジェクトのメンバーを反復処理するJS組み込みオブジェクト数学オブジェクト...

CSS変換ページめくりアニメーションレコードの実装

ページめくりの問題のシナリオBとCは同じページ(表と裏)にありますページをめくって A をカバーした...

iframe ページパラメータの文字化けの問題について議論

非常に珍しいパラメータ文字化けの問題に遭遇しました。まずページを見てみましょう写真に示すように、月次...

CSS 要素を表示および非表示にする 9 つの方法

Web ページの制作では、要素の表示と非表示は非常に一般的な要件です。この記事では、要素を表示したり...

MySQLステートメントの記述と実行順序を理解するだけです

MySQL ステートメントの書き込み順序と実行順序には大きな違いがあります。書き順、mysql の一...

独自のサーバーを素早く構築する方法の詳細なチュートリアル(Java 環境)

1. サーバーの購入1. 私はAlibaba Cloudのサーバーを選択しました。学生向けで月額9...

Select はダブルクリック dbclick イベントをサポートしていません

XML/HTML コードコンテンツをクリップボードにコピー< div クラス= "c...

js の getBoundingClientRect() メソッドの詳細な説明

1. getBoundingClientRect() 分析getBoundingClientRect...

JavaScript が重複したネットワークリクエストを防ぐ方法の例

序文開発中は、インターフェース要求の繰り返しによってさまざまな問題が発生することがよくあります。ネッ...