blog

vueのsetTimeout関数の正しい使い方。

Vueプロジェクトで作業していたとき、this.$メソッドを呼び出すと、pushは関数ではなく、これはウィンドウを指しているというエラーが出ました。...

Dec 30, 2020 · 1 min. read

Vueプロジェクトで作業中にsetTimeoutを使用して、this.router.push({パス: "/xxx" })メソッドを呼び出すと、pushは関数ではないと表示されます。

settimeoutを使用すると、thisはウィンドウを指します。""がウィンドウを指しているのに、なぜthisが変化してデータオブジェクトを指さなくなるのですか?

これは、setTimeout関数が、実行中の関数とは完全に別の実行環境で実行されるコードを呼び出しているため、thisがウィンドウオブジェクトを指すようになっているためです!

解決策
export default {
 methods: {
 start: function () {
 setTimeout(() => {
 this.$router.push({ path: "/xxx" })
 }, 300);
 }
 }
data(){
 _this = this
}
methods: {
 start: function () {
 setTimeout(() => {
 _this.$router.push({ path: "/xxx" })
 }, 300);
 }
}



Read next

mongodbの基本的なインストールと利用の流れ

デフォルトのポートは27017、パスはデータベースの名前で、デフォルトは3つです。上記はプロセスを使用したノードの基本的なリンクです。

Dec 30, 2020 · 2 min read