vue:调接口给data里的空字符串赋值死都赋不上去

vue:调接口给data里的空字符串赋值死都赋不上去

这个问题困扰我很久了,我发现调接口改变data里面的数据,如果data是对象或者数组格式,就能改变,如果是字符串,死都改不掉,改变this指向我做了,watch监听我也试了,实在是无计可施,除非我把数据类型换了

data(){

return {

demo:'',

}

},

created(){

this.getMsg()

},

methods:{

async getMsg(){

let res = await this.$request.get('/接口路径')

if(res.code === 200){

this.demo = res.data

console.log(this.demo) // 此处打印demo的值已更新,但是在created或者mounted或者其他地方拿demo的值就是空,拿不到更新后的

}

}

}


回答:

created先执行的,async只是语法糖,并不会暂停代码执行,除非你把created也变成async,await getMsg后再打印


回答:

额,接口请求是需要时间的。

你在created中请求接口,然后在created打印demo的时候,接口还没有返回值,demo的值是旧的。
但是,如果是对象或数组类型,当时打印的就是旧的,接口返回值之后,打印出来的值会更新。

不信的话,你把demo换成数组类型,打印demo[0]看看。


回答:

this.getMsg()

.then(_ => {

// 有赋值成功的话,这里就能拿到this.demo了

})

async 函数


回答:

data(){

return {

demo:'',

}

},

async created(){

let res = await this.$request.get('/接口路径');

if(res.code === 200){

this.demo = res.data

console.log(this.demo)

}

},

以上是 vue:调接口给data里的空字符串赋值死都赋不上去 的全部内容, 来源链接: utcz.com/p/936700.html

回到顶部