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