序文この記事では、vue3 を使用してカウント機能を実装するグローバル コンポーネントをカプセル化する方法を説明します。ショッピング サイトでよく使用される数量選択モジュールの適用シナリオは一目でわかると思います。実装方法を見てみましょう。 1. カプセル化の重要性
2. どのようにカプセル化しますか? 1. アイデアvue3 では v-model を使用して、親コンポーネントと子コンポーネント間の相互の値転送を完了します。この記事では、vueuse/core のカプセル化された useVModel を使用してこの機能を実装し、カプセル化されたパブリック コンポーネントから制御する値をスローします。 2. 準備依存関係をインストールする プロジェクトのルートディレクトリで任意のターミナルを開き、npm install @vueuse/[email protected] を実行します。 グローバルコンポーネントのカプセル化 前回の記事と同様に、vueプラグインを通じてグローバルコンポーネントとして登録します 注: この記事では、カプセル化されたグローバル コンポーネントを src/components の下に配置します。ファイルの場所と名前は自分で決めることができます。 新しいファイルmy-numbox.vueを作成します コードは次のとおりです(例): <テンプレート> <div class="my-numbox"> <div class="label"> <slot>数量</slot> </div> <div class="numbox"> <a href="javascript:;" @click="toggle(-1)" :class="{notallow: modelValue === 1}">-</a> <input type="text" 読み取り専用 :value="num"> <a href="javascript:;" @click="toggle(1)" :class="{notallow: modelValue === inventory}">+</a> </div> </div> </テンプレート> <スクリプト> '@vueuse/core' から {useVModel} をインポートします。 エクスポートデフォルト{ 名前: 'MyNumbox', 小道具: { モデル値: { タイプ: 数値、 デフォルト: 1 }, 在庫: タイプ: 数値、 必須: true } }, セットアップ(props、{emit}){ // サードパーティのメソッドによって制御されるデータの双方向バインディング const num = useVModel(props, 'modelValue', emitting) // 製品データの変更操作を制御する const Toggle = (n) => { (n < 0) の場合 { // 1つ減算する if (num.value > 1) { 数値 -= 1 } } それ以外 { // 1つの操作を追加します if (num.value < props.inventory) { 数値 += 1 } } } { num, トグル } を返す } } </スクリプト> <style スコープ lang="less"> .my-numbox { ディスプレイ: フレックス; アイテムの位置を中央揃えにします。 .notallow{ カーソル: 許可されていません。 } .ラベル { 幅: 60ピクセル; 色: #999; 左パディング: 10px; } .numbox { 幅: 120ピクセル; 高さ: 30px; 境界線: 1px 実線 #e4e4e4; ディスプレイ: フレックス; > { 幅: 29px; 行の高さ: 28px; テキスト配置: 中央; テキスト装飾: なし; 背景: #f8f8f8; フォントサイズ: 16px; 色: #666; &:最初の型 { 右境界線:1px 実線 #e4e4e4; } &:最後の型 { 左境界線:1px 実線 #e4e4e4; } } > 入力 { 幅: 60ピクセル; パディング: 0 5px; テキスト配置: 中央; 色: #666; } } } </スタイル> ここではVueプラグインを介してグローバルコンポーネントとして登録する手順は説明しません。前回の記事を読んでください。 2. 使用.vueで終わるファイルであればどこでも使えます コードは次のとおりです(例): コンポーネントタグの内容は、パブリックコンポーネントのデフォルトスロットの内容を上書きします。 在庫は在庫数量、つまりユーザーが選択できる最大値です(ここではデモンストレーション用の固定値です) <テンプレート> <div class="home-banner"> <MyNumbox v-model="num" :inventory="5">アイテム数:</MyNumbox> </div> </テンプレート> <スクリプト> 'vue' から { ref } をインポートします エクスポートデフォルト{ 名前: 'アプリ'、 設定 () { 定数num = ref(1) { 数値 } を返す } } </スクリプト> <スタイル lang="less"> .ホームバナー{ マージン: 100px 自動; 幅: 500ピクセル; 高さ: 100px; } </スタイル> 3. 効果の実証要件が満たされていることがわかります。最大値または最小値に達すると、ボタンをクリックすると無効になります。 要約するこれで、vue3 を使用してカウント関数コンポーネントのカプセル化例を実装するこの記事は終了です。vue3 カウント関数コンポーネントの関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Nginx コンパイル済み nginx - 新しいモジュールを追加
>>: MySQL インデックスのパフォーマンス最適化の問題に対する解決策
今日、私は <a href="#13"></a> につい...
序文簡単に言えば、tcpdump は、ネットワーク上のトラフィックをダンプし、ユーザーの定義に従って...
目次1. カスタム指示の登録1.1. グローバルカスタム指示1.2. ローカルカスタム指示2. カス...
序文Linux のスケジュールされたタスクを実装する方法としては、cron、anacron、at な...
ウェブページに表示されるプレーヤーは、WMP/RealPlayer/Flash Player に過ぎ...
1. ネットワークの最適化YSlowには23のルールがあります。これら数十のルールは、主に、不要な...
この記事では、主に、div の水平レイアウトの両側の配置を実装する 3 つの方法を紹介し、それらを共...
写真といえば、まず背景画像が思い浮かびます。私たちの装飾の多くは背景画像を使用して実現されているから...
序文コア機能のデフォルトの組み込みディレクティブ (v-model および v-show) に加えて...
目次1. データベースの使用を選択2. 情報を表示する3. テーブルを作成する4. データを挿入する...
効果画像(境界線の色が薄すぎるので、{} で囲みます): { }参考リンク Pure CSS バブル...
1 要件の概要MySQL5.6本番データベースの複数のテーブルのデータは、Oracle11gデータウ...
Google Chrome では、ログインに成功すると、パスワードを記憶するかどうかを尋ねるメッセー...
イギリスBFC: ブロック書式設定コンテキストBFCレイアウトルール内箱は縦方向に次々に配置されます...
目次ケース1:ケース2:ケース3:簡単にまとめると:過去 2 日間で、完全なテーブル スキャンを引き...