検索
ホームページウェブフロントエンドuni-appuniapp がサブコンポーネント メソッドの呼び出しに失敗した場合はどうすればよいですか?

最近、uniapp を使用して小さなプログラムを開発していたときに、サブコンポーネント メソッドの呼び出しに失敗するという問題が発生しました。調査とデバッグを行った結果、解決策を見つけたので、それを共有します。

まず、この問題が発生するシナリオを見てみましょう。カスタム コンポーネントがページに導入され、コンポーネント内に外部から呼び出す必要があるメソッドがあります。これは、コンポーネント オブジェクトのメソッドでメソッドを定義し、コンポーネント内でそのメソッドを呼び出すことで実現できます。ただし、実際に呼び出すと、以下に示すように、このメソッドは常に null 値を返すことがわかりました。

// 引入组件
<template>
  <custom-component></custom-component>
</template>

<script>
  import customComponent from &#39;@/components/custom-component.vue&#39;
  export default {
    components: {
      customComponent
    },
    mounted() {
      // 调用子组件方法
      const data = this.$refs.customComponent.customMethod()
      console.log(data) // 输出:undefined
    }
  }
</script>

// custom-component.vue
<template>
  <div>这是一个自定义组件</div>
</template>

<script>
  export default {
    methods: {
      customMethod() {
        return &#39;这是从子组件返回的数据&#39;
      }
    }
  }
</script>

ここでは、親コンポーネントで子コンポーネントのcustomMethod メソッドを呼び出し、戻り値を出力しようとしています。方法。ただし、コンソールでは戻り値が未定義であることがわかります。

調査の結果、uniappのコンポーネントの通信方法がVueのネイティブコンポーネントの通信方法と異なるためであることが判明しました。 uniapp では、uni.$emit を使用してイベントを送信し、コンポーネントでイベントをリッスンする必要があります。正しい例は次のとおりです。

// 引入组件
<template>
  <custom-component></custom-component>
</template>

<script>
  import customComponent from &#39;@/components/custom-component.vue&#39;
  export default {
    components: {
      customComponent
    },
    methods: {
      onCustomEvent(data) {
        console.log(data) // 输出:这是从子组件返回的数据
      }
    }
  }
</script>

// custom-component.vue
<template>
  <div>这是一个自定义组件</div>
</template>

<script>
  export default {
    methods: {
      customMethod() {
        // 向父组件发送事件
        this.$emit(&#39;customEvent&#39;, &#39;这是从子组件返回的数据&#39;)
      }
    }
  }
</script>

この例では、@customEvent を使用してサブコンポーネントのイベントをリッスンし、onCustomEvent メソッドでサブコンポーネントから渡されたデータを処理します。イベントを送信するメソッドは、親コンポーネントで子コンポーネントのメソッドを呼び出すのではなく、子コンポーネントで行う必要があることに注意してください。

これは、uniapp では、親コンポーネントが子コンポーネントのメソッドを直接呼び出すことができないためです。代わりに、データ転送とコンポーネント通信にイベントを使用する必要があります。

要約すると、uniapp とネイティブ Vue のコンポーネント通信方法は少し異なります。 uniapp では、イベントを通じてコン​​ポーネント間で通信する必要があります。特にサブコンポーネントのメソッドを呼び出す場合、これを実現するには $emit を使用してイベントを送信し、サブコンポーネントでイベントをリッスンする必要があります。

この記事が皆様のお役に立てば幸いです。読んでいただきありがとうございます。

以上がuniapp がサブコンポーネント メソッドの呼び出しに失敗した場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター