uni.getstorage で取得した値を data のデータにバインドすることはできません

uniappはあまり使いませんが、本当に大きな落とし穴に遭遇しました、丸一日かかりました、内容が間違っていたらご指摘、修正してください。

問題は、uniapp ではストレージに保存されている 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
	        }
        });
    }

}

テスト出力は空ですが、内部テストには内容があり、関数内でリダイレクトされることを考慮してアロー関数に変更しました

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の公式サイトを探して、最終的にこれにバインドする方法に変更しました。

onLoad(){
    this.get_user_id()
    console.log(this.user_id)  //测试输出
},
methods:{
    get_user_id(){
       this.user_id=uni.getStorageSync('user_id')
    }

}

問題が解決しました。

おすすめ

転載: blog.csdn.net/qq_43644046/article/details/129275518