在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

Logo

前往低代码交流专区

更多推荐