在开发小程序用户登录功能时,用wx.login获取code后调用接口登录,但跳转到个人中心页面时数据没刷新,还要手动刷新才能显示登录状态。
尝试过用wx.navigateTo跳转,也试过setData更新state,但页面还是显示未登录状态。这是我的CSS布局代码:
.user-info {
display: flex;
align-items: center;
visibility: var(--user-visibility, hidden);
}
控制台没报错,就是数据不同步,求大神指点!
wx.navigateTo跳转的话,目标页面并不会重新加载,所以登录状态的数据可能没有及时更新。建议你在登录成功后,使用
wx.setStorageSync把登录状态存储到本地缓存中,比如存一个 token 或者用户信息。然后在跳转到个人中心页面时,先通过onShow生命周期函数去检查缓存中的状态,确保每次页面展示时都能同步最新的数据。代码可以这样写:
注意安全:不要直接把敏感信息比如 token 存在本地缓存里,最好加密一下,或者只存一个标识符,具体数据还是从服务器拉取。另外,记得在服务端校验 token 的合法性,防止被伪造。
至于你的 CSS 部分,看起来是用
visibility控制显示隐藏,这个没问题,但建议结合登录状态动态设置样式,比如在setData中更新--user-visibility的值。最后提醒一下,调试的时候多看看网络请求和缓存是否正常,避免因为缓存未清除导致问题难以复现。