Composition API はロジック再利用手順を実装します。
たとえば、現在のマウスの位置を取得するメソッドを定義します。 1 つ目は、ref で定義された useMousePosition を直接使用することです。このようにして、輸出と輸入の両方を自由に構造化することができる。 // マウスの位置を使用する 'vue' から { ref, onMounted, onUnmounted } をインポートします。 // 1. 関数を定義し、ロジックを抽出し、useXXX という名前を付けます 関数useMousePosition() { // ref を使用して定義します const x = ref(0) 定数y = ref(0) 関数 update(e) { console.log(x.値、y.値); x.値 = e.ページX y.値 = e.pageY } マウント時(() => { console.log('マウス移動イベントのリッスンを開始します'); window.addEventListener('mousemove', 更新) }) マウント解除時(() => { console.log('マウススクロールイベントの監視を削除します'); window.removeEventListener('mousemove', 更新) }) 戻る { ×、 ええ } } // この関数をエクスポートする export default useMousePosition <!-- このメソッドはどのコンポーネントでも呼び出すことができます --> <テンプレート> <p>マウスの位置: {{x}}, {{y}}</p> </テンプレート> <スクリプト> './useMousePosition' から useMousePosition をインポートします。 エクスポートデフォルト{ 名前: 'MousePosition', 設定() { // useMousePosition は ref を使用して変数を定義し、分解することができます。const { x, y } = useMousePosition() コンソールログ(x, y) 戻る { x, y } } } </スクリプト> 2 番目の方法は、reactive を使用してマウス座標オブジェクトを定義することです。このエクスポート メソッドは、コンポーネントにインポートするときに構造化解除できません。 'vue' から { onMounted、onUnmounted、reactive } をインポートします。 エクスポート関数useMousePosition2() { // reactive を使用して定義します const mouse = reactive({ x: 0, 年: 0 }) 関数 update(e) { マウス.x = e.pageX マウス.y = e.pageY } マウント時(() => { console.log('マウス移動イベントのリッスンを開始します'); window.addEventListener('mousemove', 更新) }) マウント解除時(() => { console.log('マウススクロールイベントの監視を削除します'); window.removeEventListener('mousemove', 更新) }) 戻る { ねずみ } } <テンプレート> <!-- オブジェクト メソッドを使用して情報を表示します --> <p>マウスの位置2: {{mouse.x}}, {{mouse.y}}</p> </テンプレート> <スクリプト> './useMousePosition' から { useMousePosition2 } をインポートします。 エクスポートデフォルト{ 名前: 'MousePosition', 設定() { // useMousePosition2 はリアクティブを使用して定義されているため、分解は不可能です const { mouse } = useMousePosition2() 戻る { ねずみ } } } </スクリプト> 3番目の方法はtoRefsを使うことですこのメソッドを使用すると、リアクティブ オブジェクトを ref オブジェクトに分解できます。 エクスポート関数useMousePosition3() { // reactive を使用して定義します const mouse = reactive({ x: 0, 年: 0 }) 関数 update(e) { マウス.x = e.pageX マウス.y = e.pageY } マウント時(() => { console.log('マウス移動イベントのリッスンを開始します'); window.addEventListener('mousemove', 更新) }) マウント解除時(() => { console.log('マウススクロールイベントの監視を削除します'); window.removeEventListener('mousemove', 更新) }) // ここで、toRefs を使用して ref オブジェクトに分解します。return toRefs(mouse) } <テンプレート> <p>マウスの位置: {{x}}, {{y}}</p> </テンプレート> <スクリプト> './useMousePosition' から {useMousePosition3 } をインポートします。 エクスポートデフォルト{ 名前: 'MousePosition', 設定() { // リアクティブを使用してマウス座標オブジェクトを定義し、toRefs を介してそれを参照オブジェクトに分解します。const { x, y } = useMousePosition() コンソールログ(x, y) 戻る { x, y } } } </スクリプト> 3 つの方法はすべて実装できますが、通常使用する場合は ref オブジェクトを返すため、1 番目と 3 番目の方法を使用し、2 番目の方法は使用しないようにすることをお勧めします。 Vue3 コンポジション API でロジック再利用を実現する方法についての記事はこれで終わりです。Vue3 コンポジション API ロジック再利用の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Win10にmysql8.0.15 winx64をインストールしてサーバーに接続する際に問題が発生しました
>>: Centos7 ベースの mysql5.7 のクイックインストールのチュートリアル分析
ロックの分類:データ操作の粒度から:テーブルロック:操作時にテーブル全体がロックされます。行ロック:...
show processlist コマンドは非常に便利です。MySQL の実行が 50% 以上になる...
目次前の単語同期と非同期前菜プレートを追加マクロタスク マイクロタスク約束しましょうタイマーを追加す...
border-radius:10px; /* すべての角は半径 10px で丸められます*/ bor...
<br />原文: http://andymao.com/andy/post/104.h...
Compose のいくつかの部分は、何らかの方法で環境変数を扱います。このチュートリアルは、必要な情...
多くのウェブサイトのソースコードを確認すると、多くのコメントが見つかります。特に、ソース文書にコメン...
目次概要予防1. 使用方法2. 実装手順予備実装コード効果: Geo共通設定上記の構成を追加した後の...
ファイル名が少ないファイルを表示ファイル名を少なく | grep -n コンテンツを検索内容に応じて...
目次序文1. オフィス文書の種類のプレビュー2. PDF形式のプレビュー3. 画像の種類4. ビデオ...
目次現在の問題解決プロセス具体的な手順解決した事件現在の問題MySQL コマンド プロンプトに複数行...
目次概要1. 範囲エラー2. 参照エラー3. 構文エラー4. タイプエラー5. URIエラー6. 評...
導入:インターネット上にはデータベースの最適化に関する情報や方法が数多くありますが、その多くは品質に...
この記事では、MySQL で 2 つのテーブルを関連付ける結合テーブルにインデックスを作成する方法を...
目次序文QueryCache の概要クエリキャッシュ構成QueryCache の使用queryCac...