UniApp のアプリケーションが広く普及するにつれて、カスタム コンポーネントを使用するときに「コンポーネント イベント バインディング パスが間違っている」という問題に遭遇する開発者がますます増えています。この問題はUniApp開発ではよくある問題で、解決できずにしばらく悩まされ、大変な思いをされている方も多いのではないでしょうか。この記事では、この問題の解決策について説明します。
カスタム コンポーネントを使用する場合、通常、クリック イベントなどのコンポーネント イベントが使用されます。たとえば、カスタム コンポーネント MyComponent があります。このコンポーネントをページ内で使用し、クリック イベントをバインドします。コードは次のとおりです:
<template> <MyComponent @click="handleClick"></MyComponent> </template> <script> export default { methods: { handleClick() { console.log('clicked'); }, }, }; </script>
ここでコンポーネント MyComponent が次のように定義されている場合、エラーが発生します:
<template> <div>我是MyComponent组件</div> </template> <script> export default { mounted() { console.log('MyComponent mounted'); }, }; </script>
UniApp コンパイラは次のようなエラー メッセージを返します:
事件绑定路径错误:Property or method "handleClick" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property. See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties. (found in component <MyComponent>)
このエラーはコンポーネントが原因ですイベント バインディング パス エラーが発生し、イベントが正しくバインドされませんでした。コンポーネントはさまざまな状況で再利用できるように設計されており、ある程度の抽象化を持っていますが、コンポーネントの内部イベントによって定義される動作が多すぎると、予測と管理が困難になります。読みやすさとコードの優雅さを維持するには、イベント処理関数を外部に移動し、親コンポーネントで処理する必要があります。
この問題の解決策は実際には非常に簡単で、イベント処理関数を親コンポーネントに移動することです。イベントが正常にバインドできるように、コードを変更しましょう:
<template> <MyComponent @click="handleClick"></MyComponent> </template> <script> export default { methods: { handleClick() { console.log('clicked'); }, }, components: { MyComponent: { template: ` <div>我是MyComponent组件</div> `, }, }, }; </script>
。
以上がUniAppのコンポーネントイベントバインディングパスエラーの問題を解決する方法です まとめると、カスタムコンポーネントを使用している場合に「コンポーネントイベントバインディングパスエラー」が発生する場合が発生した場合は、イベント処理関数を親コンポーネントに移動して処理する必要がある場合があります。このようにして、コンポーネントをより適切にカプセル化し、コードの保守性を向上させることができます。
以上がUniApp エラーの問題を解決: 'xxx' コンポーネント イベント バインディング パスが間違っていますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。