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

推薦する

CSS の一部のプロパティの前には「*」または「_」が付きます。

CSS の一部のプロパティの前には「*」または「_」が付きます。さまざまなブラウザを識別する例えば...

Blazor における CSS 分離の問題

1. 環境VS 2019 16.9.0 プレビュー 1.0 .NET SDK 5.0.100 2. ...

VirtualBox でのホストオンリー + NAT モードのネットワーク構成

VirtualBoxのHost Only+NATモードのネットワーク構成は参考用です。具体的な内容は...

Linuxのアラーム機能の例の説明

Linuxアラーム機能の紹介上記のコード: #include <stdio.h> #in...

オブジェクト指向の観点から Vue コンポーネントを理解するための簡単な分析

同じ関数や HTML コードが複数回使用される場合は、それらをコンポーネントに抽出することを検討でき...

CentOS8 で MySQL 8.0 をインストールしてデプロイする方法

MySQL 8 の公式バージョン 8.0.11 がリリースされました。公式発表によると、MySQL ...

MySQL における count(*)、count(1)、count(col) の違いのまとめ

序文count 関数は、テーブルまたは配列内のレコードをカウントするために使用されます。count(...

Linux centos7 環境での MySQL インストール チュートリアル

Linux centos7 環境に MySQL をインストールする手順の詳細な紹介MySQLをインス...

React双方向データバインディングの原理についての簡単な説明

目次双方向データバインディングとは双方向データバインディングの実装データ影響ビュービューはデータに影...

Vue で動的に追加されたルーティング ページの更新時に失敗する理由と解決策

目次問題の説明シナリオインターフェースリターンフロントエンドメニューの定義vuex のメソッド問題原...

NextCloud プライベート クラウド ストレージ ネットワーク ディスクの構築に関する詳細なチュートリアル

Nextcloud は、オープンソースで無料のプライベート クラウド ストレージ ネットワーク ディ...

docker を使用して Windows 10 Home バージョンで Laravel 開発環境を構築する方法の詳細なチュートリアル

オペレーティング·システム: Win10 ホームエディションDockerをインストールします:公式サ...

Vue ローカルコンポーネントデータ共有 Vue.observable() の使用

コンポーネントが詳細になるにつれて、複数のコンポーネントが状態を共有する状況に遭遇するでしょう。Vu...

React-Native スクリーンショットコンポーネント react-native-view-shot の紹介と使い方のまとめ

目次1. 現象2. 解決策3. 要約: 1. 現象1. 要件: 特定の表示ページをキャプチャしてアル...

MySQL DATE_FORMAT関数の使用

タオバオが、ダブル11に最も多くの注文をした2人のユーザー、ユーザー1:「ショッピングの皇帝、陳哈哈...