Vue3 の refs 関数: コンポーネント インスタンスへの直接アクセス

王林
リリース: 2023-06-18 12:09:07
オリジナル
1710 人が閲覧しました

Vue3 の refs 関数: コンポーネント インスタンスへの直接アクセス

Vue3 では、コンポーネント インスタンスに直接アクセスできる refs という新しい関数が追加され、開発者により便利な開発方法が提供されます。この記事では、Vue3 の refs 関数を深く掘り下げて、その使用方法とコンポーネント開発におけるその価値を理解します。

Vue2 参照メソッド

Vue2 では、$refs を使用してコンポーネントまたは要素を参照できます。たとえば、次のコードを通じてコン​​ポーネント インスタンスを取得できます:


ログイン後にコピー

マウントされたフックでは、 this.$refs.myComponentRef を通じてコン​​ポーネント インスタンスにアクセスします。これにより、コンポーネントの操作がある程度容易になります。ただし、Vue2 では、$refs には以下の問題があります。

  1. $refs はマウントされたフック内に割り当てられるため、レンダリング直後にコンポーネントを使用すると、コンポーネントのインスタンスが見つからない可能性があります。
  2. $refs は単なる単純なオブジェクトであるため、コンポーネントのイベントまたはメソッドをリッスンしたい場合は、マウントされたフックに手動でバインドする必要があります。
  3. ネストされたコンポーネントの場合、$refs を使用して孫コンポーネント インスタンスにアクセスする場合は、$refs に対して再帰操作を実行する必要があります。

Vue3 の参照方法

Vue2 と比較して、Vue3 の新しい refs 関数はコンポーネントの参照方法を最適化します。 refs 関数を使用すると、$refs を使用せずにコンポーネント インスタンスに直接アクセスできるため、Vue2 の問題を回避できます。

次のコードを通じてコン​​ポーネント インスタンスを取得できます:


ログイン後にコピー

Vue3 では、ref 関数を使用して myCompomentRef をリアクティブ変数に変換します。 myComponentRef を含むオブジェクトがセットアップ フックで返され、コンポーネントで公開されます。マウントされたフックでは、this.myComponentRef を通じてコン​​ポーネント インスタンスに直接アクセスできます。

孫コンポーネントのインスタンスにアクセスする必要がある場合は、refs 関数を使用して直接アクセスすることもできます。


ログイン後にコピー

この例では、refs 関数を使用して親コンポーネントのインスタンスを取得します。マウントされたフックでは、this.parentComponentRef.value.$refs.childComponentRef を通じて孫コンポーネント インスタンスにアクセスできます。

概要

Vue3 では、refs 関数により、コンポーネント インスタンスにアクセスするためのより直感的で便利な方法が提供され、Vue2 に存在する問題が回避されます。これは Vue3 の新機能の 1 つでもあり、開発者はこれをマスターすることをお勧めします。セットアップ フックで使用するだけでなく、テンプレートでも使用できます。例:

ログイン後にコピー

この例では、クリック イベントをバインドし、ボタンがクリックされると、myComponentRef.value.update( ) メソッドと呼ばれるため、マウントされたフックでイベントを手動でバインドする必要がありません。

最後に、この記事が Vue3 での refs 関数の使用に役立ち、Vue3 開発者にいくつかのアイデアや参考情報を提供できれば幸いです。

以上がVue3 の refs 関数: コンポーネント インスタンスへの直接アクセスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!