この記事では、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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: HTML Webページ作成チュートリアル iframeタグを慎重に使用してください
>>: MySQL テーブルにはどのくらいの量のデータを保存できますか?
CSS の一部のプロパティの前には「*」または「_」が付きます。さまざまなブラウザを識別する例えば...
1. 環境VS 2019 16.9.0 プレビュー 1.0 .NET SDK 5.0.100 2. ...
VirtualBoxのHost Only+NATモードのネットワーク構成は参考用です。具体的な内容は...
Linuxアラーム機能の紹介上記のコード: #include <stdio.h> #in...
同じ関数や HTML コードが複数回使用される場合は、それらをコンポーネントに抽出することを検討でき...
MySQL 8 の公式バージョン 8.0.11 がリリースされました。公式発表によると、MySQL ...
序文count 関数は、テーブルまたは配列内のレコードをカウントするために使用されます。count(...
Linux centos7 環境に MySQL をインストールする手順の詳細な紹介MySQLをインス...
目次双方向データバインディングとは双方向データバインディングの実装データ影響ビュービューはデータに影...
目次問題の説明シナリオインターフェースリターンフロントエンドメニューの定義vuex のメソッド問題原...
Nextcloud は、オープンソースで無料のプライベート クラウド ストレージ ネットワーク ディ...
オペレーティング·システム: Win10 ホームエディションDockerをインストールします:公式サ...
コンポーネントが詳細になるにつれて、複数のコンポーネントが状態を共有する状況に遭遇するでしょう。Vu...
目次1. 現象2. 解決策3. 要約: 1. 現象1. 要件: 特定の表示ページをキャプチャしてアル...
タオバオが、ダブル11に最も多くの注文をした2人のユーザー、ユーザー1:「ショッピングの皇帝、陳哈哈...