Vueのいくつかの開発テクニック
1.親コンポーネントに子コンポーネントをバインドするライフサイクル
一般的な書き方は、サブコンポーネントのmountedで非同期メソッドを呼び出して対応するデータを取得してレンダリングすることです.もちろん、非同期メソッドのいくつかのパラメータはルーティングで取得することができ、親コンポーネントのpropsを介して伝達する必要がある場合もある.このコンポーネントの汎用性が高い場合、非同期呼び出しの方法とインタフェースが変化する可能性があるため、サブコンポーネントがレンダリングのみを担当することを望んでいます.これにより、以下の方法で実現することができる.
サブアセンブリ:
親コンポーネント
@hookを使用するとコンポーネントのライフサイクルをリスニングでき、サブコンポーネント内ではレンダリングを担当するだけで、created、updatedなども使用できます.
2、タイマー解除
ページのマウント時にタイマーを使用する必要がある場合があります.それに応じて、ページの破棄時にタイマーをクリアする必要があります.次のコードは問題ないように見えますが、よく見てください.timerの唯一の役割は、beforeDestroy内でタイマシーケンス番号を取得できることだけであり、それ以外は何の役にも立たない.
ここでは、$onまたは$onceリスニングページのライフサイクル破棄によって、この問題を解決できます.
一般的な書き方は、サブコンポーネントのmountedで非同期メソッドを呼び出して対応するデータを取得してレンダリングすることです.もちろん、非同期メソッドのいくつかのパラメータはルーティングで取得することができ、親コンポーネントのpropsを介して伝達する必要がある場合もある.このコンポーネントの汎用性が高い場合、非同期呼び出しの方法とインタフェースが変化する可能性があるため、サブコンポーネントがレンダリングのみを担当することを望んでいます.これにより、以下の方法で実現することができる.
サブアセンブリ:
export default {
mounted() {
this.$emit('getData');
}
}
親コンポーネント
@hookを使用するとコンポーネントのライフサイクルをリスニングでき、サブコンポーネント内ではレンダリングを担当するだけで、created、updatedなども使用できます.
2、タイマー解除
ページのマウント時にタイマーを使用する必要がある場合があります.それに応じて、ページの破棄時にタイマーをクリアする必要があります.次のコードは問題ないように見えますが、よく見てください.timerの唯一の役割は、beforeDestroy内でタイマシーケンス番号を取得できることだけであり、それ以外は何の役にも立たない.
export default {
mounted() {
this.timer = setInterval(() => {
//
}):
},
beforeDestroy() {
clearInterval(this.timer);
}
}
ここでは、$onまたは$onceリスニングページのライフサイクル破棄によって、この問題を解決できます.
export default {
mounted() {
this.creatInterval(Date.now());
},
creatInterval(now) {
let timer = setInterval(() => {
console.log(now);
}, 1000)
this.$once('hook:beforeDestroy', function() {
clearInterval(timer);
})
}
}