在vue的mouted生命周期函数中拿不到data中的数据
因为mounted并不是等created中的代码都执行后再执行,created中的同步代码做完后,mounted执行其中的同步代码,然后created再执行其中的异步代码,而ajax请求回数据是异步代码并且是微任务,所以就造成了在mounted拿数据是空的情况。在created中能拿到数据,如果在mounted中数据写死页面会渲染静态的数据,但如果通过ajax请求拿到的数据当页面渲染就没有数据显示
·
在created中能拿到数据,如果在mounted中数据写死页面会渲染静态的数据,但如果通过ajax请求拿到的数据当页面渲染就没有数据显示出来,通过后台打印数据发现mounted拿到的数据是空的。
因为mounted并不是等created中的代码都执行后再执行,created中的同步代码做完后,mounted执行其中的同步代码,然后created再执行其中的异步代码,而ajax请求回数据是异步代码并且是微任务,所以就造成了在mounted拿数据是空的情况。
解决:给mounted中的同步任务加一个settimeout定时器,定的时间比ajax请求回来数据的时间长即可。
mounted() {
setTimeout(()=>{
this.ref_date = this.list.map((item) => item.ref_date);
console.log(this.ref_date)
},1
更多推荐
已为社区贡献1条内容
所有评论(0)