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 のクイックインストールのチュートリアル分析
この記事では、MySQL を使用してデータを Excel にエクスポートする方法について説明します。...
1. 心の旅最近コックピットを書いていたときに、背景画像を単純に特定の角度に回転させるという問題につ...
自社製品にクリック後1~2秒待機時間があるボタン(確認メールを送信する)があるため、クリック後の1~...
CentOS 7.3のインストール手順を図解しました。具体的な内容は次のとおりです。この記事では、v...
目次1. Vue2との比較1. Vue3の新機能2. Vue2とVue3の応答原理の比較3. 配列の...
ElementUIはテーブルリストのページング効果のチュートリアルを実装しています。参考までに。具体...
目次序文1. 再帰コンポーネント2. 右クリックメニューコンポーネント要約する序文今日、プロジェクト...
Taobao のウェブページはインポートを使用していますが、多くのウェブサイトはリンクを使用していま...
序文apt-get コマンドは、Ubuntu システムのパッケージ管理ツールです。パッケージのインス...
目次情事の概念取引の状態取引の役割取引の特徴トランザクション構文トランザクション対応ストレージエンジ...
01. コマンドの概要gcc コマンドは、GNU がリリースした C/C++ ベースのコンパイラを使...
目次1. サンプルコード2. 現象を通して本質を見抜く3. 実施原則4. 親コンポーネントのコンパイ...
MySQL は非常に強力なリレーショナル データベースです。しかし、初心者の中には、インストールや設...
ポップアップは、現在のウィンドウにメニューツールバーがあるかどうかとは関係ありません。ページにスクリ...
目次需要背景思考分析UI 表示始める1. 支払いコンポーネントテンプレートを作成する2. 支払いコン...