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 変数の原理と応用例

推薦する

HTML テーブルタグチュートリアル (32): セルの水平方向の配置属性 ALIGN

水平方向では、セルの配置を左、中央、右に設定できます。基本的な構文<TD ALIGN=&quo...

Dockerで最もよく使われるイメージコマンドとコンテナコマンドの詳細な説明

この記事では、Docker の使用で最もよく使用されるイメージ コマンドとコンテナ コマンドを一覧表...

Ubuntu 18.04 は pyenv、pyenv-virtualenv、virtualenv、Numpy、SciPy、Pillow、Matplotlib をインストールします

1. 現在、Pythonのバージョン管理ツールは数多く存在します。その中でも比較的使いやすいのがPy...

JavaScript クロージャの説明

目次1. クロージャとは何ですか? 2. クロージャの役割2.1) メモリ2.2) プライベート変数...

SSH経由でリモートLinuxシステムでコマンドを実行する方法

場合によっては、リモート マシンでいくつかのコマンドを実行する必要があることがあります。これが時々行...

js 実行コンテキストとスコープの概要

目次序文文章1. JavaScriptコードの実行プロセスに関連する概念2. 実行コンテキストと実行...

Prometheusコンテナのデプロイメントのための実用的なソリューション

環境ホスト名IPアドレス仕えるプロメテウス192.168.237.137プロメテウス、グラファナノー...

MySQL データベース接続例外の概要 (収集する価値あり)

Centos にプロジェクトをデプロイするときに奇妙な問題が見つかりました。データベース接続で例外...

HTML ul および li タグを使用して画像を表示するサンプル コード

以下のコードをDreamweaverのコードエリアにコピーすると、プレビュー時に以下の画像が表示され...

DockerプライベートライブラリHarborのアーキテクチャとコンポーネントの説明

この記事では、Harbor アーキテクチャの構成と、実行時に各コンポーネントを使用する方法について説...

MySQL 5.7.18 アーカイブ圧縮版のインストールチュートリアル

この記事では、MySQL 5.7.18アーカイブ圧縮版をインストールする具体的な方法を参考までに紹介...

HTML フォーム コントロールの無効な属性の読み取り専用と無効の概要

HTML でフォームの送信を無効にする方法は 2 つあります。 1. コントロールタグにreadon...

Javascript Echarts 空気質マップ効果の詳細な説明

まず、空気質データと地図データを組み合わせる必要があります。マップデータには属性名があるさまざまな都...

MySQL ビューの原則分析

目次更新可能なビュービューのパフォーマンスビューの制限ビューは MySQL 5.0 以降で導入されま...

ドキュメントの場所の比較

<br />2 年前に PPK が投稿した素晴らしいブログ記事では、contains()...