序文この記事では、vue3 を使用してカウント機能を実装するグローバル コンポーネントをカプセル化する方法を説明します。ショッピング サイトでよく使用される数量選択モジュールの適用シナリオは一目でわかると思います。実装方法を見てみましょう。 1. カプセル化の重要性
2. どのようにカプセル化しますか? 1. アイデアvue3 では v-model を使用して、親コンポーネントと子コンポーネント間の相互の値転送を完了します。この記事では、vueuse/core のカプセル化された useVModel を使用してこの機能を実装し、カプセル化されたパブリック コンポーネントから制御する値をスローします。 2. 準備依存関係をインストールする プロジェクトのルートディレクトリで任意のターミナルを開き、npm install @vueuse/core@5.3.0 を実行します。 グローバルコンポーネントのカプセル化 前回の記事と同様に、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 インデックスのパフォーマンス最適化の問題に対する解決策
目次概要最初のステップステップ2なぜ別の _data が必要なのでしょうか?データにもう少しデータを...
いわゆる 3 列適応レイアウトとは、両側の幅が固定され、中央のブロックの幅が適応されることを意味しま...
シェルスクリプトはアクセス制御を設定し、複数回のログイン失敗後にIPをブロックしてSSHのブルートフ...
目次オープニングシーンv-for を使用した直接レンダリングカスタムコンポーネントで直接レンダリング...
他の人のウェブページを保存して見たことがあると思いますが、特にdwで開くと、多くのウェブページに&l...
1. まず、お使いのマシンに応じて、MySQL 公式サイトから対応するデータベースをダウンロードしま...
追加するdocker run -it -name test -d nginx:latest /bin...
ブロック引用の定義と使用法<blockquote> タグは引用ブロックを定義します。 &...
目次ダーティページ(メモリページ)ダーティページが表示されるのはなぜですか?メモリ管理メカニズムの簡...
履歴書コード: XML/HTML コードコンテンツをクリップボードにコピー<!DOCTYPE ...
序文この記事では、主にWeb開発のためのクロスドメインソリューションを紹介し、参考と学習のために共有...
この記事では、参考までに、スネークゲームを実装するためのWeChatアプレットの具体的なコードを紹介...
目次序文レンダリングの役割レンダリング機能の説明レンダリングとテンプレートの違いレンダリング例要約す...
私は全体のプロセスを 4 つのステップに分けます。 JDKをダウンロードしてインストールするTomc...
目次序文始めるちょっとした考えコードの実装真似する実装トラックトリガーの実装観察の実装計算の実装序文...