親コンポーネントから子コンポーネントのメソッドを実行したいのですが、子コンポーネントの指定ができず、子コンポーネントのメソッドが実行できません。
具体的には、子コンポーネントにrefを指定しても、undifindが帰ってきます。
親から子コンポーネントの関数を実行することが出来ないことがわかりました。
vueの方針として、propの状態変化でイベントを起こすことを推薦しているようなので、propの監視で対応しようと考えました。
なんども申し訳ありません。
できる様です。
ただ、私の場合だと、というエラーが出てしまい、methodsに登録してるメソッドを読むことが出来ず、
発火できません。
Error in mounted hook: "TypeError: Cannot read property 'メソッド名' of undefined"
監視にwatch
を使ってみようと考えたのですが動きません。
propに対して、watchを起動させるにはどうしたらよいでしょうか?
親コンポーネント
親コンポーネントで、changeCompchangeComp
をい実行するとalertが発火する想定。
記述ミスがあったため修正します。
実際のコードから抜粋しているので、設定を書き忘れていた箇所がありました。
vue
1<template"> 2 <child-component ref="child" v-bind:is-comp="this.$data.isComp"></child-component> 3</template> 4 5<script> 6import child-component from 'child-component' 7export default { 8 methods: { 9 data() { 10 return { 11 isComp: false 12 } 13 }, 14 components { 15 child-component 16 } 17 initializeChild() { 18 const { child } = this.$refs 19 // 子コンポーネントを呼ぶ 20 child.reset(); 21 }, 22 changeComp() { 23 this.$data.isComp = true 24 } 25 } 26 mounted() { 27 initializeChild(); 28 } 29} 30</script>
子コンポーネント
vue
1<template"> 2<div class="chilid-container"> 3 <p>子コンポーネント</p> 4</div> 5</template> 6 7<script> 8export default { 9 prop['isComp'], 10 watch: { 11 isComp: function(val) { 12 this.reset() 13 } 14 } 15 methods: { 16 reset() { 17 console.log('reset') 18 } 19 } 20} 21</script>
試した事
- propではなく、同じコンポーネントのdataの値を設置してみた
-> 反応しない。




回答1件
あなたの回答
tips
プレビュー