this.$router.push 提示错误 Cannot read property ‘push‘of undefined

记笔记,免忘记!方便自己后续查阅!

问题如下图:

因为我这里是等待两个请求请求完成后再执行跳转方法,所以代码如下:

                setTimeout(function(){
                    localStorage.removeItem('taskQuery');
                    this.$router.push({path:'/configure'})
                },1000)

但是运行之后,报错  push undefined

解决如下:

1、网上说用前头函数,尝试了无效

2、增加.bind(this)成功。代码如下

                setTimeout(function(){
                    localStorage.removeItem('taskQuery');
                    this.$router.push({path:'/configure'})
                }.bind(this),1000)

原因:

在默认情况下,使用 setTimeout() 时,this 关键字会指向 window(或 global)对象。当类的方法中需要 this 指向类的实例时,你可能需要显式地把 this 绑定到回调函数,就不会丢失该实例的引用。即  事件后添加  

.bind(this)


setTimeout(function(){}.bind(this))

axios.post().then(res=>{}.bind(this))

....

或者在setTimeout()函数外面,定义一个变量来暂存this

参考文档

Function.prototype.bind()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值