Vue3.0はチェックボックスコンポーネントのカプセル化を実装します

Vue3.0はチェックボックスコンポーネントのカプセル化を実装します

この記事では、チェックボックスコンポーネントのカプセル化を実装するためのvue3.0の具体的なコードを参考までに紹介します。具体的な内容は次のとおりです。

一般的な手順:

  • コンポーネント自体の選択と選択解除の効果を実現する
  • コンポーネントのv-modelディレクティブを実装する
  • @vueuse/core関数の記述に変換
<!-- 基本的なコンポーネント スタイル -->
<テンプレート>
  <div class="xtx-checkbox" @click="changeChecked()">
    <i v-if="チェック済み" class="iconfont icon-checked"></i>
    <i v-else class="iconfont icon-unchecked"></i>
    <span v-if="$slots.default"><スロット /></span>
  </div>
</テンプレート>

<スクリプト>
'vue' から { ref } をインポートします
エクスポートデフォルト{
  名前: 'XtxCheckbox',
  設定 () {
    const チェック済み = ref(false)
    定数changeChecked = () => {
      チェックされた値 = !チェックされた値
    }
    戻り値: {checked, changeChecked}
  }
}
</スクリプト>

<style スコープ lang="less"> 
 // スタイルは適宜変更できます。xtx-checkbox {
  表示: インラインブロック;
  右マージン: 2px;
  .アイコンチェック済み{
    色: @xtxColor;
    ~ スパン {
      色: @xtxColor;
    }
  }
  私 {
    位置: 相対的;
    上: 1px;
  }
  スパン {
    左マージン: 2px;
  }
}
</スタイル>
// 注: グローバルに使用する必要がある場合は、グローバル コンポーネントとして登録する必要があります。
<!-- v-model ディレクティブを実装する -->
...構造<script>を省略する
'vue' から { toRef } をインポートします
エクスポートデフォルト{
  名前: 'XtxCheckbox',
  小道具: {
    modelValue: { // v-modelのデフォルトのバインディング値はmodelValueです
      タイプ: ブール値、
      デフォルト: false
    }
  },
  セットアップ(props、{emit}){
    const checked = toRef(props, 'modelValue') // 受信したブール値を格納するためにcheckedを定義します。const changeChecked = () => {
      emitting('update:modelValue', !checked.value) // チェックボックスをチェックするために親コンポーネントに値を渡します}
    戻り値: {checked, changeChecked}
  }
}
</スクリプト>
...楕円形スタイル
<!-- 基本的な使用方法 -->
<!-- カスタム チェックボックス テスト -->
<xtx-checkbox v-model="checked">カスタムチェックボックス</xtx-checkbox>
<スクリプト>
'vue' から { ref } をインポートします
エクスポートデフォルト{
  名前: 'サブカテゴリ',
  設定 () {
    const チェック済み = ref(true)
    チェック済みを返す
  }
}
</スクリプト> 

<!-- @vueuse/core 関数の記述 -->
<テンプレート>
  <div class="xtx-checkbox" @click='checked=!checked'>
    <i v-if="チェック済み" class="iconfont icon-checked"></i>
    <i v-else class="iconfont icon-unchecked"></i>
    <span>
      <スロット />
    </span>
  </div>
</テンプレート>

<スクリプト>
import { useVModel } from '@vueuse/core' // npm i @vueuse/core または yarn add @vueuse/core が必要です
エクスポートデフォルト{
  名前: 'XtxCheckbox',
  小道具: {
    モデル値: {
      タイプ: ブール値、
      デフォルト: false
    }
  },
  セットアップ(props、{emit}){
    // 親コンポーネントから渡された modelValue の値を取得します。const checked = useVModel(props, 'modelValue', emitting)
    チェック済みを返す
  }
}
</スクリプト>


// 使用方法は上記と同じ <xtx-checkbox v-model="checked">カスタム チェックボックス</xtx-checkbox>
<スクリプト>
'vue' から { ref } をインポートします
エクスポートデフォルト{
  名前: 'サブカテゴリ',
  設定 () {
    const チェック済み = ref(true)
    チェック済みを返す
  }
}
</スクリプト>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue3 コンパイルプロセス - ソースコード分析
  • Vue3における7種類のコンポーネント通信の詳細
  • Vue3カプセル化メッセージメッセージプロンプトインスタンス関数の詳細な説明
  • Vue2とVue3の兄弟コンポーネント通信バスの違いと使い方
  • vue3 を使用してカウント関数コンポーネントのカプセル化例を実装する
  • Vue3.0はドロップダウンメニューのカプセル化を実装します
  • vue3とvue2の利点の比較
  • Vue3とTypeScriptを組み合わせたプロジェクト開発の実践記録
  • Vue3とTypeScriptを組み合わせたプロジェクト開発の実践の概要
  • Vue3 AST パーサー - ソースコード分析

<<:  DockerにNginxをインストールする方法

>>:  MySQL 変数の原理と応用例

ブログ    

推薦する

VUE ユニアプリカスタムコンポーネントについての簡単な説明

1. 親コンポーネントはpropsを通じて子コンポーネントにデータを渡すことができる2. 子コンポー...

Vue のクロスドメイン問題の処理と解決策の概要

ネットワークリクエストを送信すると、次の保存情報が表示されます。おめでとうございます。ドメインを越え...

Git サーバーを使用してデバッグ ブランチを表示し、修正する方法を 1 日 1 分で学習します。

デバッグブランチプロジェクトの通常の開発中に、以前にリリースされたバージョンにバグがある場合がありま...

MySQL はどのようにしてデータの整合性を確保するのでしょうか?

オンライン ビジネスにとってデータの一貫性と整合性が重要であることは明らかです。データが失われないよ...

Dockerがログファイルを保存する場所の詳細な説明

目次ログはどこに保存されますか?コンテナ内のアプリケーションからのログを表示するDockerデーモン...

Linux ドメイン ネーム サービス DNS 設定方法

DNSとはDNS の正式名称は Domain Name System で、ドメイン名解決システムを意...

Apache Bench で Web ストレス テストを実装する方法

1. Apache Benchの紹介ApacheBench は、Apache サーバーに付属する W...

MySQL 8.0 のメモリ消費の詳細な分析

目次1. innodb_buffer_pool_size 2. innodb_log_buffer_...

MySQL シリーズ 7 MySQL ストレージ エンジン

1. MyISAM ストレージエンジン欠点:トランザクションはサポートされていません最小粒度ロック:...

html リンク タグ タイトル属性 改行 マウス ホバー プロンプト コンテンツ 改行効果

オブジェクト上にマウスを移動したときにコンテンツ(タイトル属性の内容)を折り返す方法、HTML タイ...

MySQLスタートアップが起こした事故の実録

目次背景MySQLが完全に起動したかどうかを確認する方法事故最初の変更2回目の改訂要約するMySQL...

Vue プロジェクトで axios をカプセル化する方法 (http リクエストの統合管理)

1. 要件Vue.js フレームワークを使用してフロントエンド プロジェクトを開発する場合、サーバ...

複数のdiv内のテーブルのtdwidth設定は同じで、揃えることができません

最近、複数のdivにあるテーブルのTDを同じ幅に調整しても、揃えることができず、幅にパターンがないこ...

Vueは書籍ショッピングカートの機能を実現

この記事の例では、書籍ショッピングカート機能を実現するためのVueの具体的なコードを参考までに共有し...

CSSは、他のレイヤーを変更せずに、多層ネスト構造の最外層を回転させる効果を実現します。

次のようなシナリオがあります。円形のコンテナで、最も外側のコンテナの背景が円弧になっています。内側の...