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 テーブルにはどのくらいの量のデータを保存できますか?

推薦する

Linux および Unix サーバーのセキュリティを強化する方法

ネットワーク セキュリティは非常に重要なトピックであり、サーバーはネットワーク セキュリティにおける...

サーバー同時実行数の推定式と計算方法

最近、サーバーのストレステストを再度行う必要が出てきました。ここでは、最近学んだ見積もりスキームと見...

SQL Server コメントのショートカット キー操作

SQL Server のバッチコメントバッチ注釈Ctrl + (K, C): Ctrlキーを押しなが...

Docker Compose で利用可能な環境変数の詳細な説明

Compose のいくつかの部分は、何らかの方法で環境変数を扱います。このチュートリアルは、必要な情...

Apache ab を使用して HTTP パフォーマンス テストを実行する

MacにはApache環境が付属していますターミナルを開き、sudo apachectl -v と入...

Elementのメッセージポップアップウィンドウが繰り返しポップアップする問題の解決

目次1. 使用2. メッセージポップアップウィンドウが繰り返し表示される問題を解決する1. 使用Vu...

Linux コマンドライン操作 Baidu クラウドのファイルのアップロードとダウンロード

目次0. 背景1. インストール2. Baidu Cloudアカウントにログインする3. ファイルを...

MySQL でグループ化した後、各グループの最大値を取得する詳細な例

MySQL でグループ化した後、各グループの最大値を取得する詳細な例1. テストデータベーステーブル...

Vue のデータ応答性に関する詳細な理解

目次1. ES 構文のゲッターとセッター2. ES構文でのdefineProperty 3. Vue...

Linux 7.6 バイナリに MySQL 8.0.27 をインストールする詳細な手順

目次1. 環境整備1.1 オペレーティング システムのバージョン1.2 ディスク容量1.3 ファイア...

HttpとHttpsの両方をサポートするNginxの詳細な設定

最近の Web サイトでは Https をサポートすることがほぼ標準機能となっており、Nginx は...

HTML独習の旅(I)基本要素と属性の練習(自分でコードを書く)

私は W3school のチュートリアルに従いました。チュートリアルはとても良いと思います。各セクシ...

Webデザイン講座(4):素材と表現について

<br />前回のWebデザインチュートリアル:Webデザインチュートリアル(3):デザ...

HTML検証 HTML検証

HTML 検証はHTML 検証を指します。これは、HTML ドキュメントを分析し、標準の HTML ...

Nodejs で WeChat アカウント分割を実装するためのサンプルコード

会社のビジネスシナリオでは、WeChat アカウント分割機能を使用する必要があります。公式 Web ...