Reactはグローバル箇条書きボックスメソッドをカプセル化します

Reactはグローバル箇条書きボックスメソッドをカプセル化します

この記事の例では、Reactカプセル化グローバルポップアップボックスの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

ポップアップ効果図

ファイルレイアウト

インデックス

/* eslint を無効にする react/no-render-return-value */
React をインポートします。{ コンポーネント } を 'react' からインポートします。
'immutable' から { is, fromJS } をインポートします
'react-dom' から ReactDOM をインポートします。
'./alert.less' をインポートします

const close = require('../images/guanbi.png')
定数 line = require('../images/line.png')

定数デフォルト状態 = {
  アラートステータス: false、
  アラートヒント: null、
  アラートタイトル: '詳細',
  クローズアラート: () => {}
}

クラス Toptips は Component を拡張します {
  状態 = {
    ...デフォルト状態
  }

  //cssアニメーションコンポーネントがターゲットコンポーネントに設定されます FirstChild = props => {
    const childrenArray = React.Children.toArray(props.children)
    childrenArray[0]を返す || null
  }

  // ポップアップボックスを閉じる confirm = () => {
    const that = this
    console.log(それ)
    this.setState() は、
      {
        アラートステータス: false
      },
      () => {
        that.state.closeAlert()
      }
    )
  }

  オープン = データ => {
    const オプション = データ || {}
    オプション.alertStatus = true
    this.setState({
      ...デフォルト状態、
      ...オプション
    })
  }

  閉じる = () => {
    const that = this
    that.state.closeAlert()
    this.setState({
      ...デフォルト状態
    })
  }

  コンポーネントの更新 = (次のプロパティ、次の状態) => {
    戻る (
      !is(fromJS(this.props), fromJS(nextProps)) ||
      !is(fromJS(this.state), fromJS(nextState))
    )
  }

  与える() {
    const { alertStatus、alertTip、alertTitle } = this.state
    console.log(アラートヒント、アラートタイトル)
    戻る (
        <div
          クラス名="アラートコン"
          style={alertStatus ? {display: 'block' } : {display: 'none' }}
        >
          <div className="アラートコンテキスト">
            <div className="アラートコンテンツタイトル">{アラートタイトル}</div>
            <img className="alert-content-line" src={line} alt="line" />
            <div className="alert-content-detail">{アラートヒント}</div>
            <画像
              役割="プレゼンテーション"
              クリックすると{() => {
                確認()
              }}
              className="アラートを閉じる"
              src={閉じる}
              alt="閉じる"
            />
          </div>
        </div>
    )
  }
}

定数div = document.createElement('div')
定数プロパティ = {}
ドキュメント本体に子要素を追加します。

const Box = ReactDOM.render(React.createElement(Toptips, props), div)

デフォルトボックスをエクスポート

少ない

.アラート-コン{
  位置: 固定;
  上: 0;
  左: 0;
  幅: 100%;
  高さ: 100%;
  背景: rgba(255, 255, 255, 0.3);
  Zインデックス: 222;
}
.アラートコンテキスト{
  // 背景色: #fff;
  // 境界線の半径: 16px;
  位置: 相対的;
  // 高さ: 500px;
  高さ: 90%;
  幅: 750ピクセル;
  マージン: 40px 自動 0;
  背景: url(../images/alertBJ.png) 繰り返しなし 中央;
  背景サイズ: 100% 100%;
  .アラートを閉じる{
    幅: 30ピクセル;
    高さ: 30px;
    位置: 絶対;
    右: 30px;
    上: 30px;
  }
  .アラートコンテンツタイトル{
    幅: 100%;
    高さ: 80px;
    行の高さ: 80px;
    色: #fff;
    テキスト配置: 中央;
    フォントサイズ: 36px;
    フォントの太さ: 太字;
    // 背景: url(../images/line.png) no-repeat left bottom;
  }
  .アラートコンテンツ行{
    幅: 100%;
    高さ: 20px;
    上マージン: -44px;
    左マージン: -6px;
  }
  .アラート詳細リスト{
    幅: 102%;
    高さ: 100%;
    オーバーフロー-y: 自動;
    パディング: 20px 60px;
    .アラート詳細リストC{
      p{
        &:n番目の子(1){
          フォントサイズ: 14px;
          行の高さ: 20px;
          色: #FFFFFF;
          文字間隔: 1.4px;
        }
        &:n番目の子(2){
          行の高さ: 24px;
          フォントサイズ: 18px;
          色: #FFFFFF;
        }
      }
    }
  }
  .アラートコンテンツの詳細{
    // 高さ: 100%;
    高さ: calc(100% - 100px);
    /* オーバーフロー-y: 自動; */
    オーバーフロー: 非表示;
    幅: 98%;
    上マージン: -26px;
  }
  .アラート詳細-pdf{
    幅: 102%;
    高さ: 100%;
    オーバーフロー-y: 自動;
    パディング: 20px 60px;
    .アラート詳細ボタン{
      ディスプレイ: フレックス;
      flex-direction: 行;
      コンテンツの端揃え: flex-end;
      下マージン: 10px;
      p{
        色:#fff;
        行の高さ: 35px;
        フォントサイズ: 16px;
        右マージン: 20px;
      }
      {
        行の高さ: 35px;
        フォントサイズ: 16px;
        右マージン: 20px;
      }
    }
  }
.cameraWrap{
  幅: 100%;
  高さ: 102%;
  ボックスのサイズ: 境界線ボックス;
  パディング: 12px 4px 0 14px;
}
}

使用法

  • alertTitle ポップアップタイトル
  • alertTip ポップアップ コンテンツ、カスタム スタイル
  • closeAlert は閉じるときに情報を返しますが、これは必要に応じてオプションになります。
「./Toptips」からToptipsをインポートします
トップヒント.open({
      alertTitle: 「コメントの詳細」、
      アラートヒント: that.htms(val),
      クローズアラート: 関数 () {
        console.log("閉じました...");
      }
    });
  htms = val => {
    戻る (<div className="alert-detais-list">
      <div className="アラートの詳細リスト-C">
        <p>コメント内容:</p>
        <p>{val.fdタイトル}</p>
      </div>
      <div className="アラートの詳細リスト-C">
        <p>コメントの詳細:</p>
        <p>{val.fdタイトル}</p>
      </div>
      <div className="アラートの詳細リスト-C">
        <p>測定と結果:</p>
        <p>{val.fdContent}</p>
      </div>
      <div className="アラートの詳細リスト-C">
        <p>進捗状況の詳細:</p>
        <p></p>
      </div>
    </div>)
  }

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Reactはantdフォーム割り当てを使用してポップアップボックスの操作を変更します
  • React Native はプログレスバーポップアップのサンプルコードを実装します

<<:  MySQLの論理アーキテクチャに関する深い理解

>>:  XHTML CSS ページをプリンタ ページに変換する

推薦する

自動ロック画面機能を実現するjs

1. 使用シナリオこのような要件があるため、システムが開発されました。ユーザーがデスクトップを離れ...

星のきらめき効果を実現するネイティブ js

この記事の例では、星のきらめき効果を実現するためのjsの具体的なコードを共有しています。具体的な内容...

Windows 64 ビット版 MySQL 5.7 以降の解凍パッケージにデータディレクトリと my-default.ini がなく、サービスが起動できない問題の簡単な解決方法 (問題概要)

私は SQL の初心者で、オープンソースのインストールは非常に簡単だと思っていましたが、その過程でい...

Nginx の realip モジュールの使い方の基礎学習

序文nginx モジュールには、公式とサードパーティの 2 種類があります。nginx のインストー...

DockerはホストのMysql操作に接続します

今日、会社のプロジェクトでは docker を設定する必要があります。Windows に正常にインス...

Dockerfileの指示と基本構造の説明

Dockerfile を使用すると、ユーザーはカスタム イメージを作成できます。基本構造Docker...

Vue-Routerのルート設定の詳しい説明

目次導入ルート内のオブジェクト属性パス: 文字列コンポーネント: コンポーネント | () =>...

Tomcat プロジェクトを展開する一般的な方法のいくつか [テスト済み]

1 / Webプロジェクトファイルをwebappsディレクトリに直接コピーするこれは最も一般的に使...

MySQLのREDOログとUNDOログの詳細な説明

MySQL ログ システムで最も重要なログは、REDO ログとアーカイブ ログです。後者は MySQ...

ウェブページの画像最適化ツールと使用方法のヒントの共有

ウェブページの基本要素として、画像はページの読み込み速度に影響を与える重要な要素の 1 つです。画像...

ボタンをクリックした後のCSS読み込み効果を実現する

自社製品にクリック後1~2秒待機時間があるボタン(確認メールを送信する)があるため、クリック後の1~...

MySQL InnoDBエンジンのインデックスとストレージ構造の詳細な説明

序文Oracle や SQL Server などのデータベースには、ストレージ エンジンが 1 つだ...

テーブル設定の背景画像が100%表示されない解決策

開発中に以下の状況が発見されました。 (1) ファイルが.jspファイル拡張子で保存されている場合、...

MySQL デッドロックのトラブルシューティング プロセスの完全な記録

序文これまで遭遇したデータベースのデッドロックはすべて、バッチ更新中のロック順序の不一致が原因でした...

MySql におけるプロセス制御関数/統計関数/グループ化クエリの使用法の分析

これからの道のりは長く困難ですが、私は探求を続けます。また週末がやってきました。引き続き、皆さんと一...