VueUse は、Anthony Fu によるオープンソース プロジェクトであり、Vue 開発者に Vue 2 および Vue 3 用の多数の基本的な Composition API ユーティリティ関数を提供します。 ref の変更の追跡、要素の可視性の検出、一般的な Vue パターンの簡素化、キーボード/マウス入力など、一般的な開発者のユースケースに対応する多数のソリューションを提供します。これは、標準機能をすべて自分で追加する必要がないため、開発時間を大幅に節約できる優れた方法です。 私は VueUse ライブラリが好きです。それは、提供するユーティリティを決定する際に開発者を第一に考えており、現在のバージョンの Vue と同期しているため、よく管理されたライブラリだからです。 VueUse にはどのようなユーティリティがありますか?各ユーティリティの完全なリストを確認したい場合は、公式ドキュメントを確認することを強くお勧めします。まとめると、VueUse には 9 つの関数があります。
これらのカテゴリのほとんどは複数の異なる機能をカバーしているため、VueUse はユースケースに柔軟に対応し、Vue アプリケーションの構築をすぐに開始するのに最適な場所となります。 この記事では、5 つの異なる VueUse 関数を見て、このライブラリの操作がいかに簡単かを説明します。 しかし、まずはそれを Vue プロジェクトに追加しましょう。 VueUseをVueプロジェクトにインストールするVueUse の最も優れた機能の 1 つは、1 つのパッケージで Vue 2 と Vue 3 の両方と互換性があることです。 VueUseをインストールするには、npmまたはCDNの2つのオプションがあります。 npm i @vueuse/core # yarn を @vueuse/core に追加します <script src="https://unpkg.com/@vueuse/shared"></script> <script src="https://unpkg.com/@vueuse/core"></script> わかりやすいのでNPMを使用することをお勧めしますが、CDNを使用する場合は、window.VueUse経由でアプリケーション内のVueUseにアクセスできます。 NPM インストールの場合、次のように標準のオブジェクト分解を使用して @vueuse/core 経由でインポートすることで、すべての関数にアクセスできます。 // VueUse からのインポート例 import { useRefHistory } from '@vueuse/core' わかりましたVueUse がインストールされたので、アプリケーションで使用してみましょう。 1. レスポンシブデータの変更を追跡するためにuseRefHistoryを使用するuseRefHistory は、ref に加えられたすべての変更を追跡し、それを配列に保存します。これにより、アプリケーションに元に戻す機能とやり直し機能を簡単に提供できるようになります。 元に戻すことができるテキスト領域を作成する例を見てみましょう。 最初のステップは、VueUse を使用せずに、ref、テキストエリア、元に戻すボタンとやり直しボタンを使用して基本コンポーネントを作成することです。 <テンプレート> <p> <button> 元に戻す </button> <button> やり直す </button> </p> <テキストエリア v-model="テキスト"/> </テンプレート> <スクリプトの設定> 'vue' から { ref } をインポートします 定数テキスト = ref('') </スクリプト> <スタイルスコープ> ボタン { 境界線: なし; アウトライン: なし; 右マージン: 10px; 背景色: #2ecc71; 色: 白; パディング: 5px 10px;; } </スタイル> 次に、useRefHistory 関数をインポートし、テキスト参照から history、undo、および redo プロパティを抽出して、VueUse を追加します。これは、useRefHistory を呼び出して ref を渡すだけです。 'vue' から { ref } をインポートします '@vueuse/core' から { useRefHistory } をインポートします。 定数テキスト = ref('') const { 履歴、元に戻す、やり直し } = useRefHistory(テキスト) ref が変更されるたびに、オブザーバーがトリガーされ、作成した履歴プロパティが更新されます。 次に、実際に何が起こっているかを確認できるように、テンプレートに履歴を出力し、対応するボタンがクリックされたときに関数の呼び出しを元に戻したりやり直したりしてみましょう。 <テンプレート> <p> <button @click="undo"> 元に戻す </button> <button @click="redo"> やり直す </button> </p> <テキストエリア v-model="テキスト"/> <ul> <li v-for="履歴内のエントリ" :key="entry.timestamp"> {{エントリ}} </li> </ul> </テンプレート> <スクリプトの設定> 'vue' から { ref } をインポートします '@vueuse/core' から { useRefHistory } をインポートします。 定数テキスト = ref('') const { 履歴、元に戻す、やり直し } = useRefHistory(テキスト) </スクリプト> <スタイルスコープ> ボタン { 境界線: なし; アウトライン: なし; 右マージン: 10px; 背景色: #2ecc71; 色: 白; パディング: 5px 10px;; } </スタイル> さて、実行してみましょう。入力するたびに、各文字が履歴配列に新しいエントリをトリガーし、「元に戻す/やり直し」をクリックすると、対応するエントリに移動します。 この機能にさらに機能を追加するためのさまざまなオプションもあります。たとえば、反応オブジェクトを深くトレースし、そのような履歴エントリの数を制限することができます。 const { 履歴、元に戻す、やり直し } = useRefHistory(text、{ 深い:本当、 定員: 10, }) オプションの完全なリストについては、必ずドキュメントを確認してください。 2. onClickOutsideはモーダルを閉じるonClickOutside は、要素の外側で行われたクリックを検出します。私の経験では、この機能の最も一般的な使用例は、モーダルまたはポップアップを閉じることです。 多くの場合、ユーザーの注意を集中させ、エラーを制限するために、モーダルで Web ページの残りの部分をブロックする必要があります。ただし、モーダルの外側をクリックした場合は、モーダルを閉じる必要があります。 これはたった 2 つのステップで実行できます。
これは、onClickOutside を使用したポップアップ付きのシンプルなコンポーネントです。 <テンプレート> <button @click="open = true"> ポップアップを開く </button> <div class="popup" v-if='open'> <div class="popup-content" ref="popup"> 私は非常に堕落した人間です、そして非常に堕落しています! 私は非常に堕落しています、そして非常に堕落しています! </div> </div> </テンプレート> <スクリプトの設定> 'vue' から { ref } をインポートします '@vueuse/core' から { onClickOutside } をインポートします。 const open = ref(false) // ポップアップの状態 const popup = ref() // テンプレート参照 // ポップアップが存在する場合、ポップアップ以外のものをクリックするたびに onClickOutside(ポップアップ、() => { open.value = false }) </スクリプト> <スタイルスコープ> ボタン { 境界線: なし; アウトライン: なし; 右マージン: 10px; 背景色: #2ecc71; 色: 白; パディング: 5px 10px;; } 。ポップアップ { 位置: 固定; 上: ; 左: ; 幅:100vw; 高さ:100vh; ディスプレイ: フレックス; アイテムの位置を中央揃えにします。 コンテンツの中央揃え: 中央; 背景: rgba(, , , 0.1); } .ポップアップコンテンツ{ 最小幅: 300px; パディング: 20px; 幅: 30%; 背景: #fff; } </スタイル> その結果、ボタンを使用してポップアップを開き、ポップアップ コンテンツ ウィンドウの外側をクリックして閉じることができるようになります。 3. useVModelはv-modelバインディングを簡素化するVue 開発者の一般的な使用例は、コンポーネントのカスタム v-model バインディングを作成することです。つまり、コンポーネントは値をプロパティとして受け入れ、その値が変更されるたびに、コンポーネントは親に更新イベントを発行します。 カスタム v-model の構築に関する完全なチュートリアルについては、このトピックに関する完全なガイドをご覧ください。 useVModel 関数は、これを標準の ref 構文を使用するだけに簡略化します。テキスト入力の値に対して v-model を作成しようとするカスタム テキスト入力があるとします。通常、値のプロパティを受け入れ、変更イベントを発行して親コンポーネントのデータ値を更新する必要があります。 ref を使用して props.value を呼び出す代わりに、これを通常の ref のように使用して扱うことができます。これにより、覚えておく必要のあるさまざまな構文の数を減らすことができます。更新:valueuseVModel <テンプレート> <div> <入力 タイプ="テキスト" :value="データ" @input="更新" /> </div> </テンプレート> <スクリプト> '@vueuse/core' から {useVModel} をインポートします。 エクスポートデフォルト{ プロパティ: ['データ'], セットアップ(props, { 出力 }) { const data = useVModel(props, 'data', 出力) console.log(data.value) // props.data と等しい data.value = 'name' // 等しい: emitting('update:data', 'name') const update = (イベント) => { データ値 = イベントターゲット値 } 戻る { データ、 アップデート } }, } </スクリプト> 値にアクセスする必要があるときはいつでも、.valueuseVModel を呼び出すだけで、コンポーネントのプロパティから値が取得されます。オブジェクトの値を変更するたびに、useVModel は親コンポーネントに更新イベントを発行します。 親コンポーネントがどのようなものかを示す簡単な例を次に示します。 <テンプレート> <div> <p> {{データ}} </p> <カスタム入力 :data="データ" @update:data="データ = $イベント" /> </div> </テンプレート> <スクリプト> './components/CustomInput.vue' から CustomInput をインポートします。 'vue' から { ref } をインポートします エクスポートデフォルト{ コンポーネント: カスタム入力、 }, 設定 () { 定数データ = ref('hello') 戻る { データ } } } 結果は次のようになります。親の値は常に子の入力と同期しています。 4. InterpObserverを使用して要素の可視性を追跡するInterp オブザーバーは、2 つの要素が重なり合っているかどうかを判断する場合に非常に強力です。この良い使用例は、要素が現在ビューポートに表示されているかどうかを確認することです。 基本的には、ターゲット要素の何パーセントがルート要素/ドキュメントと交差するかをチェックします。パーセンテージが特定のしきい値を超えると、コールバックを呼び出して、ターゲット要素が表示されているかどうかを判断します。 useInterpObserver は、InterpObserver API を使用するための簡単な構文を提供します。必要なのは、検査する要素のテンプレート参照を提供することだけです。 デフォルトでは、InterpObserver はドキュメントのビューポートをルートとして使用し、しきい値は 0.1 になります。そのため、どちらかの方向でそのしきい値を超えると、交差オブザーバーがトリガーされます。 この例のコードは次のようになります。ターゲット要素のビューポートでのみスペースを占めるダミーの段落があります。 <テンプレート> <p> ターゲットは表示されていますか? {{ targetIsVisible }} </p> <div class="コンテナ"> <div class="target" ref="target"> <h1>こんにちは世界</h1> </div> </div> </テンプレート> <スクリプト> 'vue' から { ref } をインポートします '@vueuse/core' から { useInterpObserver } をインポートします。 エクスポートデフォルト{ 設定() { 定数ターゲット = ref(null) 定数 targetIsVisible = ref(false) const {stop} = useInterpObserver( ターゲット、 ([{ isIntersecting }], オブザーバー要素) => { targetIsVisible.value = 交差している }, ) 戻る { ターゲット、 ターゲットが可視、 } }, } </スクリプト> <スタイルスコープ> 。容器 { 幅: 80%; マージン: 自動; 背景色: #fafafa; 最大高さ: 300px; オーバーフロー: スクロール; } .ターゲット{ 上マージン: 500px; 背景色: #1abc9c; 色: 白; パディング: 20px; } </スタイル> 実行してスクロールすると、正しく更新されていることがわかります。 Interp Observer のルート要素、マージン (交差点の計算に使用されるルート境界ボックスのオフセット)、しきい値レベルの変更など、その他のオプションを指定することもできます。 //useInterpObserver オプション const { stop } = useInterpObserver( ターゲット、 ([{ isIntersecting }], オブザーバー要素) => { targetIsVisible.value = 交差している }, { // ルート、ルートマージン、しきい値、ウィンドウ // ソース内の完全なオプション: https://github.com/vueuse/vueuse/blob/main/packages/core/useInterpObserver/index.ts 閾値: 0.5、 } ) また、このメソッドは、交差点の監視を停止するために呼び出すことができる停止関数を返すことも重要です。これは、要素が画面に初めて表示されたときのみを追跡したい場合に特に便利です。 このコード スニペットでは、targetIsVisible が true に設定されると、オブザーバーは停止し、ターゲット要素からスクロールしても値は true のままになります。 //InterpObserverを停止する const {stop} = useInterpObserver( ターゲット、 ([{ isIntersecting }], オブザーバー要素) => { targetIsVisible.value = 交差している if (交差している) { 停止() } }, ) 5. 値間の遷移を緩めるためにuseTransitionを使用するuseTransition は、VueUse ライブラリ全体の中で私のお気に入りの関数の 1 つです。これにより、連続した値の間をスムーズに移動できるようになります。 ref として保存されたデジタル ソースと、異なる値間の遷移となる出力があります。たとえば、Vue 3 チートシートのサインアップ ページにあるようなカウンターを作成したいとします。 これは次の 3 つのステップで実行できます。
// 変換コードを使用する <スクリプト設定> 'vue' から { ref } をインポートします '@vueuse/core' から { useTransition, TransitionPresets } をインポートします。 定数ソース = ref(0) const出力 = useTransition(ソース、{ 期間: 3000、 トランジション: TransitionPresets.easeOutExpo、 }) ソース値 = 5000 </スクリプト> 次に、テンプレートでは、異なる値間をスムーズに遷移するため、出力の値を表示する必要があります。 <テンプレート> <h2> <p> 参加する </p> <p> {{ Math.round(出力) }}+ </p> <p>開発者</p> </h2> </テンプレート> <スクリプトの設定> 'vue' から { ref } をインポートします '@vueuse/core' から { useTransition, TransitionPresets } をインポートします。 定数ソース = ref() const出力 = useTransition(ソース、{ 期間: 3000、 トランジション: TransitionPresets.easeOutExpo、 }) ソース値 = 5000 </スクリプト> 結果はこちらです! Transition を使用して、数値の配列全体を変換することもできます。これは、位置や色を操作するときに便利です。色を操作するための重要なコツは、計算プロパティを使用して RGB 値を正しい色の構文にフォーマットすることです。 <テンプレート> <h2 :style="{ color: color } "> 色の変更 </h2> </テンプレート> <スクリプトの設定> 'vue' から { ref, computed } をインポートします '@vueuse/core' から { useTransition, TransitionPresets } をインポートします。 const ソース = ref([, , ]) const出力 = useTransition(ソース、{ 期間: 3000、 トランジション: TransitionPresets.easeOutExpo、 }) 定数色 = 計算された(() => { const [r, g, b] = 出力値 `rgb(${r}, ${g}, ${b})` を返します }) ソース値 = [255, , 255] </スクリプト> さらに、組み込みのトランジション プリセットを使用するか、CSS イージング関数を使用して定義するかのいずれかで、これをさらにカスタマイズできるクールな方法もいくつかあります。すべてはあなた次第です。 最後にこれは決して VueUse の完全なガイドではありません。これらは、私が最も興味深いと思った VueUse の多くの機能のうちのほんの一部です。 これらのユーティリティ関数の優れている点は、それぞれが特定の一般的なユースケースを解決するように設計されているため、開発プロジェクトのスピードアップと開発効率の向上に役立つことです。 開発をスピードアップできる 5 つの VueUse 関数ライブラリについての記事はこれで終わりです。VueUse 関数ライブラリに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
目次ブール型数値型文字列型文字列と数値を連結する未定義およびnull配列型タプル型列挙型あらゆるタイ...
この記事では、Windows に MySQL 5.7 圧縮パッケージをインストールする方法について説...
目次概要CommonJS 仕様Node の CommonJS 仕様の実装モジュールのエクスポートとイ...
まず、Moments を開いて、写真の数が異なるいくつかのレイアウトを確認するか、以下の例を参照して...
この記事では、ダッシュボードの左右スクロール効果を実現するためのスワイパー+echartsの具体的な...
この記事の例では、ショッピングカート機能を実装するためのvuexの具体的なコードを参考までに共有して...
目次序文フロントエンドモジュール開発の価値厄介な名前の競合面倒なファイル依存関係モジュール化の利点C...
目次共通バージョンの紹介共通バージョンのダウンロードアドレスとインストール以下に簡単な違いを示します...
img 要素を使用すると、HTML ドキュメントに画像を埋め込むことができます。画像を埋め込むには、...
私がこれまで携わってきた多くのプロジェクトでは、基本的に避けられない悪循環がありました。それは、ホー...
主要な Web サイトと個人的な習慣に従って、Docker ソースを追加するには次の方法を使用します...
コードをコピーコードは次のとおりです。 <form action="/hehe&qu...
エラー発生: MySQL 5.7 から SQL にデータベースをエクスポートし、それを MySQL ...
CSS ウェブページレイアウトを行う場合、XHTML1.0 仕様に準拠する必要があることは誰もが知っ...
この記事の例では、ジグソーパズルゲームを実装するためのJavaScriptの具体的なコードを参考まで...