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 ページをプリンタ ページに変換する

推薦する

IDEAでVUEプロジェクトをデバッグするための詳細な手順

js コードをデバッグするには、コード内にデバッガーを記述するか、Chrome で毎回ブレークポイン...

MySQLフィールド定義でnullを使用しない理由の分析

NULL が頻繁に使用されるのはなぜですか? (1)Javaのnull Java の NullPoi...

MySQL の起動オプションとシステム変数の例の詳細な説明

目次ブートオプションコマンドラインパラメータの長い形式と短い形式設定ファイル構成グループシステム変数...

リアルタイムクロックを実装するネイティブJS

ネイティブ JS で実装したリアルタイム クロック エフェクトを共有します。エフェクトは以下のとおり...

HTML の ReadOnly と Enabled の違い

ReadOnly 属性を持つ TextBox は、クライアント上で次のマークアップとして表示されます...

Linux のような環境で jdk1.8 をインストールし、環境変数を設定する方法の詳細な説明

設定は非常にシンプルですが、毎回確認しないといけないので、記録だけ残しておきます。 1. インストー...

Vueのv-onパラメータの問題についてお話しましょう

Vue での v-on:clock の使用現在、vue.js フレームワークを学習しています。後で参...

XHTMLはHTMLのいくつかの廃止された要素を使用しなくなりました

CSS ウェブページレイアウトを行う場合、XHTML1.0 仕様に準拠する必要があることは誰もが知っ...

スプライトとフォントアイコンを実装するためのCSS

スプライト:以前は、各画像リソースは独立した画像でした。ブラウザが Web サイト内のさまざまな W...

MySQLのタイムゾーンを表示および設定する方法

1. データベースのタイムゾーンを確認する '%time_zone' のような変数を...

Ant Design Pro ログイン機能にグラフィック検証コード コンポーネントを統合する方法

序文:この記事では、Ant Design Proログイン機能にグラフィック検証コードコンポーネントを...

Tomcat をサービスとして登録する際に注意すべき点のまとめ

Tomcat をサービスとして登録する場合の注意点は次のとおりです。 インターフェースを開いたら、以...

HTML ウェブページ作成のための 8 つの強力なテクニック

<br />作業を簡単に完了できる Web ページ作成ツールは数多くありますが、HTML...

HTML で中国語を UTF-8 に変換する方法

HTMLでは、中国語のフレーズ「學好好學」は「學好好學」と表現できます。プロジェクトでは、SMSアラ...

コンパイル/サーバーなしでブラウザにCommonJSモジュールを実装する

目次導入1. one-click.jsとは2. パッケージングツールはどのように機能しますか? 3....