uniapp我用的少,真的遇到这个大坑,整了我一天,如果内容有误,麻烦大佬指出我改正
问题情况,在uniapp里面,我需要获取存在storage里面的user_id,但是一直绑定不了this.user_id
问题程序示例:
onLoad(){
this.get_user_id()
console.log(this.user_id) //测试输出
},
methods:{
get_user_id(){
uni.getStorage({
key: 'user_id',
success: function (res) {
console.log(res.data);//内部测试
this.user_id=res.data
}
});
}
}
测试输出为空,而且内部测试却有内容,考虑到函数内部this重定向了,我改成了箭头函数
onLoad(){
this.get_user_id()
console.log(this.user_id) //测试输出
},
methods:{
get_user_id(){
uni.getStorage({
key: 'user_id',
success: (res)=> { //改成箭头函数
console.log(res.data);//内部测试
this.user_id=res.data
}
});
}
}
然而没有任何用,仍然是空,大概问题是在onload函数虽然onload函数顺序执行,但是uni.getstorage他是异步的,导致值压根没有获取到。
于是我改成了同步获取
onLoad(){
this.get_user_id()
console.log(this.user_id) //测试输出
},
methods:{
get_user_id(){
uni.getStorageSync({
key: 'user_id',
success: (res)=> { //改成箭头函数
console.log(res.data);//内部测试
this.user_id=res.data
}
});
}
}
但是测试仍然有问题,甚至输出测试都不输出了,没有办法,我检索了uniapp的官网,最后改成了一下方法,才绑定到了this.
onLoad(){
this.get_user_id()
console.log(this.user_id) //测试输出
},
methods:{
get_user_id(){
this.user_id=uni.getStorageSync('user_id')
}
}
问题解决。