uni.getUserInfo({ success: (res2) => { // console.log('当前 res2', res2) res2.rawData = JSON.parse(res.rawData); res2.rawData.nickName = that.value res2.rawData.avatarUrl = that.url0 res2.rawData = JSON.stringify(res2.rawData) let ob = { detail: res2 }; // console.log(ob) console.log(111111111133331,res2) resolve(ob);解释
时间: 2024-02-14 08:31:46 浏览: 26
这段代码是使用uni.getUserInfo函数获取用户信息,并对获取的信息进行处理和修改。
uni.getUserInfo是uni-app框架中的一个API,用于获取用户信息。在success回调函数中,可以获取到用户信息的返回结果。
在这段代码中,首先使用箭头函数定义了success回调函数。在该回调函数中,对获取到的用户信息进行了一系列的处理和修改。
首先,通过JSON.parse解析res.rawData,并将解析后的结果赋值给res2.rawData。然后,将that.value赋值给res2.rawData.nickName,并将that.url0赋值给res2.rawData.avatarUrl。接着,通过JSON.stringify将res2.rawData转换为字符串。
然后,创建了一个名为ob的对象,其中将修改后的res2作为detail属性的值。
最后,使用console.log打印了res2,并通过resolve将ob对象传递给Promise的回调函数。
综合起来,这段代码的作用是获取用户信息,并对其中的nickName和avatarUrl属性进行修改和处理,然后将处理后的结果通过Promise传递给回调函数。
相关问题
为什么在我的页面能取到登录时的token 但是在调用接口时显示token失效//调用获取用户信息接口 getUserInfo() { const baseUrl = 'http://192.168....' uni.request({ url: baseUrl + '/api/v1/...', data: { //请求参数 id: this.id }, header: { Authorization: this.token //自定义请求头信息 }, //请求方法 默认为GET method: "GET", success: (res) => { console.log(res); this.user = res.data.data.user }, fail: function(err) { console.log(err) } }); },onLoad(option) { this.setStorage() this.getStorage() this.token = uni.getStorageSync('token') console.log('我的页面的token'); console.log(this.token); this.getUserInfo() }
在您的代码中,调用接口时显示token失效的原因可能是您在获取token后没有及时更新`this.token`的值,导致在调用`getUserInfo()`时传递的是过期的token。
要解决这个问题,您可以尝试在每次调用接口之前,确保`this.token`的值是最新的,可以通过以下步骤进行修改:
1. 在`getLogin()`方法中,在获取到新的token值后,调用`setStorage()`方法存储新的token,并更新`this.token`的值。
```javascript
success: (res) => {
console.log(res);
this.id = res.data.data.userInfo.id;
this.token = res.data.data.token; // 获取新的token值
console.log(this.token);
this.setStorage(); // 将新的token存储到本地缓存中
uni.reLaunch({
url: '../mine/mine?id=' + this.id
});
},
```
2. 在`onLoad()`方法中,通过`uni.getStorageSync('token')`来获取最新的token值,并更新`this.token`。
```javascript
onLoad(option) {
this.setStorage();
this.getStorage();
this.token = uni.getStorageSync('token'); // 获取最新的token值
console.log('我的页面的token');
console.log(this.token);
this.getUserInfo();
},
```
通过这样的修改,确保在每次调用接口时传递的都是最新的token值,应该能够解决token失效的问题。请注意在其他需要使用token的地方,也要更新对应的token值。
uni-app封装uni.request()生产代码
在uni-app中,封装uni.request()的生产代码可以放在一个单独的文件中,以便在项目中多处使用。以下是一个示例的封装代码:
```javascript
// api.js
const request = (url, method, data) => {
return new Promise((resolve, reject) => {
uni.request({
url,
method,
data,
success: (res) => {
resolve(res.data);
},
fail: (err) => {
reject(err);
}
});
});
};
export default {
// 封装的请求示例
getUserInfo(id) {
const url = 'https://api.example.com/user';
const method = 'GET';
const data = { id };
return request(url, method, data);
},
// 可以继续封装其他请求方法
};
```
在上述示例中,我们将封装的uni.request()函数放在api.js文件中,并通过export default导出为一个对象。我们还在该对象中封装了一个getUserInfo方法作为示例,用于发送获取用户信息的请求。
在项目中使用封装的请求代码时,可以直接引入api.js,并调用封装的方法:
```javascript
import api from '@/api.js';
// 使用封装的请求方法
api.getUserInfo(1)
.then((data) => {
console.log(data);
})
.catch((error) => {
console.log(error);
});
```
在上述示例中,我们通过import引入了api.js文件,并使用api.getUserInfo()方法发送请求。这样,在项目中的多个地方都可以使用api.js中封装的请求方法,提高了代码的可维护性和重用性。