2017-04-20 11 views
7

計算中の$refsにアクセスするにはどうすればよいですか?計算されたプロパティが最初に実行されるときは、常に未定義です。

+1

はい、最初のレンダリングループが完了したときにのみ定義されます。それは価値があるので、計算されたプロパティの中に$ refsを使用することは、反応的ではないため、明示的には推奨されません。 https://vuejs.org/v2/guide/components.html#Child-Component-Refsあなたはより良いパターンを見つける必要があるかもしれません... – Cobaltway

答えて

22

私自身の質問にここで答えると、どこでも満足のいく答えが見つかりませんでした。場合によっては、いくつかの計算を行うためにdom要素にアクセスする必要があります。うまくいけば、これは他の人に役立つはずです。

コンポーネントがマウントされると、Vueを計算してプロパティを更新する必要がありました。ちょうど支えるためにいくつかのデータを渡す必要がある私のような他のユーザーのために

Vue.component('my-component', { 
    data(){ 
     return { 
      isMounted: false 
     } 
    }, 
    computed:{ 
     property(){ 
      if(!this.isMounted) 
       return; 
      //$refs is available 
     } 
    }, 
    mounted(){ 
     this.isMounted = true; 
    } 
}) 
+0

このようなきちんとした小さなトリックは、ありがとう! – jwahdatehagh

0

あなたがupdated()フックを使用することができv-if$refsが必要な場合は、私はdata代わりのcomputed

Vue.component('my-component', { 
    data(){ 
     return { 
      myProp: null 
     } 
    },  
    mounted(){ 
     this.myProp= 'hello'  
     //$refs is available    
     // this.myProp is reactive, bind will work to property 
    } 
}) 
1

を使用。

<div v-if="myProp"></div> 


updated() { 
    if (!this.myProp) return; 
    /// this.$refs is available 
}, 
関連する問題