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

推薦する

MySQL ストアド プロシージャ関連の権限変更の問題

MySQL データベースを使用すると、他のユーザーが定義したストアド プロシージャを他のユーザーが変...

Vueが初めて要素を取得できなかったときの解決記録

序文Vue で要素を初回取得できない問題の解決方法は、ポップアップ ウィンドウで要素を取得するために...

CentOS 7 で MySQL 5.7 をインストールして設定する

この記事では、以下の環境をテストします。 CentOS 7 64 ビット 最小 MySQL 5.7 ...

Web プロジェクト開発 JS 機能の手ぶれ補正とスロットリングのサンプル コード

目次安定導入手ぶれ補正シーン1(マウスの動き込み)手ぶれ補正シーン2(キーボードのキー)関数のスロッ...

Linuxファイルコマンドの使用

1. コマンドの紹介ファイル コマンドは、ファイルの種類を識別するために使用されます。ファイル チェ...

言及すべき8つのMySQLの落とし穴を共有する

MySQL はインストールが簡単で、高速で、豊富な機能を備えています。これはオープンソース運動のベン...

MySQLは数百万のシミュレーションデータ操作コードを自動的に挿入します

私はデータベースツールとして Navicat を使用しています。他のものも同様です。 1. Navi...

vscode で Prettier Code プラグインを使用する詳細なチュートリアル

なぜprettierを使うのですか?大企業では、フロントエンド開発コードに独自のコード標準がある場合...

HTMLフォーム要素の詳しい解説(パート1)

HTML フォームは、さまざまな種類のユーザー入力を収集するために使用されます。 HTML フォー...

データ URI スキームを使用して Web ページに画像を埋め込む方法の紹介

データ URI スキームを使用すると、HTML、CSS、Javascript などで使用できるインラ...

高速でクールな揺れアニメーション効果を実現するCSS

1. Animate.css の紹介Animate.css は、Web プロジェクトですぐに使用で...

マークアップ言語 - 簡略化されたタグ

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

独自のネイティブ JavaScript ルーターを作成する方法

目次序文導入JavaScript 履歴 API独自のネイティブJSルーティングを実装するHistor...

vue+px2rem(rem適応)を使用してPCで大画面適応を実装するためのサンプルコード

構成の序文プロジェクト構築: vue-cli3 をベースに構築、rem 適応には postcss-p...

MySQLデータベースホスト127.0.0.1とlocalhostの違い

私の友人の多くは、127.0.0.1 と localhost の違いがわからず、問題に遭遇するかもし...