分包下的componentWillPreload第一次进入不触发



  • 问题描述

    两个分包下,从当前页面跳转到另一分包的页面的时候,url里面带参数使用componentWillPreload在跳转页面监听第一次没有触发,第二次进入才触发。

    复现步骤

        //  跳转到另一分包的页面
        Taro.navigateTo({
          url: `/pages_subs/circle/my_card/index?id=${id}`
        })
    
        //  监听url传参
      componentWillPreload (params) {
        console.log(params)
        return this.getInfo(params.id)
      }
    

    期望行为

    第一次进入就打印

    系统信息

    补充信息

    因为第一次进入没有加载要跳转的分包的页面,所以第一次监听不到。
    第一个尝试先打开要跳转的那个页面,然后再上面代码跳转,就可以打印了。
    第二个尝试在同一分包里面进行跳转,能打印。
    所以猜测是所属不同分包,第一次进入没有加载导致不能打印的原因。

    Chen-jj 回复:

    你在补充信息里也提到了,初次跳转到分包页面,分包代码都没下载下来,肯定不能调用分包页面里的方法。

    分包页面的预加载可以尝试使用 $preload

    回复:

    $preload可行,那也就是说componentWillPreload这个使用的范围就是在同一分包里面,而不算是bug了?

    Chen-jj 回复:

    componentWillPreload 写在子包页面里面,子包代码没有下载,父页面如何调用呢?

    回复:

    明白了,感谢! @Chen-jj


登录后回复