react+antd.3x は IP 入力ボックスを実装します

react+antd.3x は IP 入力ボックスを実装します

この記事では、IP入力ボックスを実装するための react+antd.3x の具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

現れ方は次のとおりです。

js+html

/**
 * 2021 10 26 日曜日
 * 仮想サブネットの作成と変更に使用される IP 入力ボックス * 使用法: antd-form カスタム フォーム コントロールを参照してください。
 */
'react' から React をインポートします。
'antd' から { Input} をインポートします。
'./index.less' からスタイルをインポートします
クラスIpInputはReact.Componentを拡張します{
    コンストラクタ(){
        素晴らしい();
        this._refs = {
          refip_0: React.createRef()、
          refip_1: React.createRef()、
          refip_2: React.createRef()、
          refip_3: React.createRef()
        };
    }
    ハンドル番号変更 = (e,type) => {
        // 最小値が 0 であることを確認します。
        定数数値 = parseInt(e.target.value || 0, 10);
        if (isNaN(数値)) {
          戻る;
        }
        オブジェクトを{}とします
        Obj[`${type}`] = 数値
        このトリガーの変更(Obj);
    };
    トリガー変更 = 変更された値 => {
        const { onChange, 値 } = this.props;
        変更があった場合
          変更後({
            ...価値、
            ...変更された値、
          });
        }
      };
    turnIpPOS = (e,type)=>{
        自分自身 = this とします。
         //左矢印は左にジャンプし、何もしません if(e.keyCode === 37) {
          if(type === 0) {} else {
            self._refs[`refip_${type-1}`].current.focus();
          }
        }
        //右矢印、Enter キー、スペースバー、コロンはすべて右にジャンプし、右のものは何もしません if(e.keyCode === 39 || e.keyCode === 13 || e.keyCode === 32 || e.keyCode === 190) {
           if(type === 3) {} else {
            self._refs[`refip_${type+1}`].current.focus();
           }
        }
    }
    与える(){
        const { 値 } = this.props;
        戻る (
            <Input.Group コンパクト クラス名 = {styles.inputGroup}>
              <Input style={{ width: '24%' }} className = {styles.self_input} ref = {this._refs.refip_0} value = {value.ip_0} maxLength = {3} onChange={(e)=>{this.handleNumberChange(e,'ip_0')}} onKeyUp ={(e)=>this.turnIpPOS(e,0)}/>
              <span className = {styles.dot} ></span>
              <Input style={{ width: '24%' }} className = {styles.self_input} ref = {this._refs.refip_1} value = {value.ip_1} maxLength = {3} onChange={(e)=>{this.handleNumberChange(e,'ip_1')}} onKeyUp ={(e)=>this.turnIpPOS(e,1)}/>
              <span className = {styles.dot}></span>
              <Input style={{ width: '24%' }} className = {styles.self_input} ref = {this._refs.refip_2} value = {value.ip_2} maxLength = {3} onChange={(e)=>{this.handleNumberChange(e,'ip_2')}} onKeyUp ={(e)=>this.turnIpPOS(e,2)}/>
              <span className = {styles.dot}></span>
              <Input style={{ width: '24%' }} className = {styles.self_input} ref = {this._refs.refip_3} value = {value.ip_3} maxLength = {3} onChange={(e)=>{this.handleNumberChange(e,'ip_3')}} onKeyUp ={(e)=>this.turnIpPOS(e,3)}/>
            </Input.Group>
        )
    }
   
}
デフォルトの IpInput をエクスポートします。

CS

.inputGroup{
  境界線: 1px 実線 #d9d9d9;
  境界線の半径: 2px;
  遷移: すべて 0.3 秒;
  &:ホバー{
    境界線の色: #45bbff;
    右境界線の幅: 1px !重要;
    アウトライン: 0;
    ボックスシャドウ: 0 0 0 2px rgba(29, 165, 255, 0.2);
  }
  テキスト配置: 中央;
  .dot {
    幅: 3px;
    高さ: 3px;
    境界線: 1px実線 #000;
    境界線の半径: 3px;
    背景色: #000;
    不透明度: 0.5;
    zインデックス: 9;
    位置: 相対的;
    上: 21px;
  }
}
.self_input {
  境界線: なし;
  アウトライン: 0px;
  &:ホバー{
    ボックスシャドウ: なし;
  }
  &::選択{
    ボックスシャドウ: なし;
  }
  &:集中 {
    ボックスシャドウ: なし;
  }
}

使い方

'../../public/IpInput' から IPInput をインポートします。
<FormItem label="サブネット ゲートウェイ" {...formItemLayout}>
                {getFieldDecorator('価格', {
                  初期値: { ip_0: 255, ip_1: 235, ip_2: 255, ip_3: 255 },
                  ルール: [{ バリデータ: this.checkIp }],
                })(<IPInput />)}
 </フォーム項目>

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

以下もご興味があるかもしれません:
  • 入力ボックスの値を取得する方法のReactの例
  • 反応ネイティブソフトキーボードがポップアップして入力ボックスをブロックする問題を解決する
  • React Androidで入力ボックスがモバイルキーボードによってブロックされる問題を解決する方法
  • React-Nativeはテキスト入力ボックスコンポーネントの実装コードを作成します

<<:  HTML Webページ作成チュートリアル iframeタグを慎重に使用してください

>>:  MySQL テーブルにはどのくらいの量のデータを保存できますか?

推薦する

MySQL データベース テーブルとデータベース パーティショニング戦略

まず、テーブルを分割する必要がある理由について説明します。データシートが数百万に達すると、1 回のク...

CSS3 で z-index が効かない問題の解決方法

最近、CSS3 と js の組み合わせを作成したのですが、z-index が有効にならないケースが多...

CSSはリストのスタイルを設定し、ナビゲーションメニューの実装コードを作成します。

1. リストシンボルを設定するlist-style-type: attribute; //リストの...

Ubuntu 16.04 サーバーで MySQL を設定し、リモート接続を有効にする方法

背景最近、Node.js を勉強しているのですが、クラウド サーバーがあることを思い出しました。しか...

PHP+nginx サービス 500 502 エラーのトラブルシューティングのアイデアの詳細な説明

概要オンラインサービスへのアクセス中に 500 または 502 エラーが発生した場合、緊急処理とトラ...

ユーザーエクスペリエンスの構築

<br />おそらく、あなたは会社に入社したばかりで、その会社が「ユーザビリティ」に関す...

Filebeat を使用して Nginx ログを収集する方法

Nginx ログは、ユーザーの住所の場所や行動プロファイルなどを分析するために使用できます。Elas...

データベースクエリの最適化: サブクエリの最適化

1. 事例会社のトップ以外の従業員全員を年齢別にグループ化します。 t_emp で id が存在しな...

HTML チュートリアル、optgroup 要素の理解

カテゴリ選択を選択します。テストの結果、IE と FF はこの要素を適切にサポートできることがわかり...

Windows での MySQL 8.0.11 インストール チュートリアル

この記事は、WindowsでのMySQL 8.0.11のインストールチュートリアルを記録しています。...

Centos8 システムの VMware インストール チュートリアル図 (コマンド ライン モード)

目次1. ソフトウェアとシステムイメージ2. 仮想マシンを作成する3. CentOS8をインストール...

MySQL初心者のための基本操作のまとめ

図書館運営クエリ1.SHOW DATABASE; ----すべてのデータベースを照会する2. SHO...

VMwareがモジュールディスクを早期に開けない場合の解決策の詳細な説明

VMWare (Virtual Machine ware) は、「仮想 PC」ソフトウェア会社です。...

nginx をベースにリロードなしでアップストリーム サーバーの動的な自動起動と停止を実装する方法

目次1. Consulクラスタをデプロイする1. 準備3. Consulクラスタを作成する4. 管理...

Linux parted ディスク パーティション実装手順の分析

fdisk と比較すると、parted はあまり使用されず、主に 2T を超えるパーティションに使用...