当login页面登录成功并跳转后,调试台console显示登录成功,但AppData的userinfo显示null,my页面不显示数据,请提供解决办法,并写出改正后的完整代码
时间: 2024-10-18 12:06:57 浏览: 13
登录成功后,AppData的userinfo显示null并且my页面没有显示数据,这可能是由于数据没有及时同步到全局存储或者页面渲染的问题。以下是一些解决步骤:
1. **确保数据更新**:在`getUserInfo`函数的回调里,确保在获取到用户信息后立即更新`AppData`和页面数据。你可以添加一条`this.globalData.userInfo = userInfo;`,然后在`setData`里加入`globalData`:
```javascript
getUserInfo: function(user) {
// ...省略部分代码...
this.globalData.userInfo = userData;
this.setData({
userinfo: userData,
loading: false,
errorMsg: ''
});
},
```
同时,在`App.js`或类似全局文件中,添加`globalData`变量:
```javascript
Page({
globalData: {
userinfo: null,
},
//...其他配置
})
```
2. **重新渲染页面**:在`my`页面的`onLoad`或`onShow`生命周期中,检查`globalData.userInfo`是否已存在,如果存在再进一步处理:
```javascript
onLoad: function() {
if (this.globalData.userInfo) {
this.getUserInfoFromCache(this.globalData.userInfo);
} else {
this.checkUserLogin();
}
},
getUserInfoFromCache(userInfo) {
// 使用缓存的用户信息更新页面
}
```
3. **清理缓存**:如果上述步骤无效,可能是缓存导致的。尝试清除全局存储中的缓存:
```javascript
checkUserLogin: function() {
//... 省略部分代码 ...
wx.removeStorageSync('userinfo');
this.globalData.userInfo = null;
this.getUserInfo(user);
}
```
现在,登录成功后`my`页面应该能够正确显示用户信息。如果还有问题,可以检查`getUserInfo`函数返回结果以及页面的渲染逻辑。
阅读全文