收藏
回答

onTabItemTap 是否可以重定向

框架类型 问题类型 终端类型 操作系统 微信版本 基础库版本
小程序 需求 客户端 6.6.7 1.9.90

- 需求的场景描述(希望解决的问题)

现在我们小程序有一个「首页」、「我的」、「发帖」tab,其中「我的」、「发帖」都需要用户登录后才能进行操作,之前我们是在这两个页面直接调 wx.getUserInfo 强制用户进行登录


但为了响应 获取用户信息接口优化调整,我们新加了个「登录页」,然后在「我的」、「发帖」判断用户登录态,若未登录,使用 wx.navigateTo 重定向到这个「登录页」


然后,现在碰到的问题是,在「我的」、「发帖」进行跳转到「登录页」时,页面会【闪烁】下,用户体验非常不好


- 希望提供的能力

希望可以在 onTabItemTap 能改变 tabBar 配置里的跳转地址。伪代码如下:

onTabItemTap (item) {
  const { pagePath } = item
  const needAuthPaths = [
    '/page/my/index',
    '/page/post/index'
  ]

 

// 方案1. 使用 wx.navigateTo 进行跳转

  if (needAuthPaths.indexOf(pagePath) !== -1 && !this.loginState) {
    wx.navigateTo({
      url: '/page/login/index'
    })
    return false

  }

 

 // 方案 2,返回新的 tabBar 地址

 // return  '/page/login/index'

}


回答关注问题邀请回答
收藏

2 个回答

  • 箩灬卟
    箩灬卟
    2018-08-28

    登入页写成一个组件,然后写一个进入动画。需要的页面调用组件就会体验友好些。改写tap路由感觉比较危险

    2018-08-28
    有用
    回复
  • 2018-07-14

    可以考虑在需要用户登录的页面中操作时,进行登录操作。

    我的做法是在这些页面进行判断是否已经登录,没有登录的话会放一个全页面大小的fixed定位的opacity为0的open-type为getUserInfo的按钮,当有点击事件,就可以触发绑定的授权事件

    <button wx:if='{{!hasUserInfo}}' class='whole-button' open-type='getUserInfo' bindgetuserinfo='getUserInfo' plain='true'></button>

    .whole-button {
     
        position: fixed;
     
        z-index: 9999;
     
        top: 0;
     
        bottom: 0;
     
        left: 0;
     
        right: 0;
     
        opacity: 0;
     
    }



    2018-07-14
    有用
    回复
登录 后发表内容