uni.getstorage获取的值无法绑定到data的数据

2 篇文章 2 订阅
2 篇文章 0 订阅

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')
    }

}

问题解决。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用中提到的代码使用的是uni.getStorage方法来获取存储在storage中的userName数据,并将其赋给this.userName。而引用中提到的解决办法是使用箭头函数来避免this指向的问题。通过箭头函数的使用,可以确保this指向的是外部作用域的this,而不是内部函数的this。所以,修改后的代码可以正确地将res.data给this.userName。引用中的代码也是类似的情况,使用箭头函数来确保this指向的正确性。 uni.getStorageuni.getStorageSync的差别在于它们的返回方式不同。uni.getStorage是一个异步方法,它会在获取数据后通过回调函数的方式返回数据。而uni.getStorageSync是一个同步方法,它会立即返回数据。所以,在使用uni.getStorage时,我们需要通过回调函数来获取数据,而在使用uni.getStorageSync时,我们可以直接获取返回的数据而不需要回调函数。 总结起来,uni.getStorage是异步获取存储数据的方法,而uni.getStorageSync是同步获取存储数据的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [uniapp uni.getstorage获取无法绑定data数据](https://blog.csdn.net/weixin_61945023/article/details/129820882)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [【uni-app】在组件mounted中使用uni.getStorage,成功的回调中设置data中的数据不成功,也不报错](https://blog.csdn.net/Sonnenlicht77/article/details/130871708)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值