收藏
回答

navigateToMiniProgram变更的低版本兼容

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug navigateToMiniProgram/navigator 微信iOS客户端 6.6 1.9.0

wx.navigateToMiniProgram接口即将废弃,转为使用navigator组件,但是版本最低要求2.0.7,@官方,请问对于低版本的我怎么做兼容呢?


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

2 个回答

  • 岁月如歌
    岁月如歌
    2018-07-02
    <template>
      <div>
        <navigator v-if="canIUseNavigator" :class="className" :target="target" :app-id="appId" :open-type="openType" :path="path" :extra-data="extraData" :version="version">
          <slot></slot>
        </navigator>
        <div v-else :class="className" @click="gotoMiniProgram">
          <slot></slot>
        </div>
      </div>
    </template>
     
    <script>
    /**
    * 注意mpvue暂时不支持slot(scoped)
    */
    const app = getApp();
    export default {
      /**
       * 页面所需数据
       * @return {Object} 页面数据
       */
      data: function() {
        return {
          canIUseNavigator: false // 是否启用navigator组件,根据基础版本号判断是否大于2.0.7
        };
      },
      props: {
        className: String,
        target: String,
        openType: String,
        appId: String,
        path: String,
        extraData: Object,
        version: String
      },
      /**
       * 页面初始化,获取版本信息
       * @return {Void} 无
       */
      mounted: function() {
        wx.getSystemInfo({
          success: res => {
            console.log(res.SDKVersion);
            let baseVersion = res.SDKVersion.split(".").join("") - 0;
            if (baseVersion >= 207) {
              console.log("使用navigator组件打开小程序");
              this.canIUseNavigator = true;
            } else {
              console.log("使用wx.navigateToMiniProgram方法打开小程序");
              this.canIUseNavigator = false;
            }
          }
        });
      },
      methods: {
      /**
       * 小程序跳转,基础库低于2.0.7版本使用
       * @return {Void} 无
       */
        gotoMiniProgram() {
          wx.navigateToMiniProgram({
            appId: this.appId,
            path: this.path,
            extraData: this.extraData || null,
            envVersion: this.version,
            success: () => {
              console.log(`appId为:${this.appId}的小程序被打开`);
            },
            fail: () => {
              console.log(`appId为:${this.appId}的小程序打开失败`);
            }
          });
        }
      }
    };
    </script>

    基于mpvue开发,提供一下思路。

    暂时不可以用wx.canIUse进行判断。

    2018-07-02
    有用
    回复
  • Pak
    Pak
    2018-06-19

    同求@官方

    2018-06-19
    有用
    回复
登录 后发表内容