Vue エラーの解決方法: ref を使用して子コンポーネントの親コンポーネント インスタンスにアクセスできません
Vue 開発では、親コンポーネントと子コンポーネント間の通信が必要になります。非常に一般的な操作です。一般的な方法の 1 つは、ref を使用して、子コンポーネント内の親コンポーネントのインスタンスにアクセスすることです。ただし、場合によっては、子コンポーネント内の親コンポーネント インスタンスにアクセスするために ref を正しく使用できないというエラーが発生することがあります。この記事では、このエラーの原因を紹介し、解決策とコード例を示します。
問題分析:
子コンポーネントで ref を使用して親コンポーネントのインスタンスを参照すると、「未定義のプロパティ '$parent' を読み取れません」というエラーが表示されることがあります。このエラーの理由は、子コンポーネントの作成プロセス中に、親コンポーネントのインスタンスが完全に作成されていないため、子コンポーネントが親コンポーネントのインスタンスに正しくアクセスできないためです。
解決策:
この問題を解決するには、適切なタイミングで親コンポーネントのインスタンスにアクセスする必要があります。 Vue は、この状況を処理するためのライフサイクル フック関数、つまり「マウント」を提供します。子コンポーネントのマウントされたフック関数で親コンポーネントのインスタンスにアクセスして、親コンポーネントが完全に作成されたことを確認できます。
サンプル コードは次のとおりです。
// 親コンポーネント
<h2>父组件</h2>
<ChildComponent ref="childRef"></ChildComponent>
< ;/template>
<script><br>import ChildComponent from './ChildComponent.vue'</p><p>export デフォルト {<br> name: 'ParentComponent',<br> コンポーネント: {</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>ChildComponent</pre><div class="contentsignin">ログイン後にコピー</div></div><p>},<br> mount() {</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>console.log('父组件实例已创建')</pre><div class="contentsignin">ログイン後にコピー</div></div><p>}<br>}<br></script>
// サブコンポーネント
<h2>子组件</h2>