收藏
回答

赋值式的修改页面onReachBottom不生效

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 Bug 微信iOS客户端 x.x.x x.x.x
page.onReachBottom = () => {
        comp.onReachBottom();
        if (oldOnReachBottom) {
          oldOnReachBottom();
        }
      };


问题表现:上述方式更新页面触底监听函数,在页面没有声明onReachBottomde事件的时候不生效,只有页面声明onReachBottom再赋值才会生效。

预期:不管Page构造函数是否声明onReachBottom,page.onReachBottom都应该被触发

代码片段:https://developers.weixin.qq.com/s/4TceyFme7Zmm

对比:

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

1 个回答

  • 华培萱🦉
    华培萱🦉
    2021-02-22

    手动给 page.onReachBottom 赋值,如果原 page.onReachBottom 未定义的话,需要在 page 的 onLoad 生命周期前完成赋值,页面才会响应 onReachBottom 事件

    你给的示例代码里面,如果在组件的 attched 生命周期内 使用同步的方法修改 page.onReachBottom 的话,是可以生效的,但是你用了异步的写法,所以没生效

    修改后运行效果如图

    2021-02-22
    有用 1
    回复 2
    • Yrobot
      Yrobot
      2021-02-22
      nice,确实是这样的情况。不清楚小程序为什么要做这么一层限制,组件级别是有监听页面事件的需求,官网目前也没提供好的方法,只能自己通过类似eventBus的形式做一个分发,但如果这个组件有异步的情况(页面交互过程中才if=true),这样组件就监听不到页面事件了。说实话很影响组件封装。对于组件监听页面事件,你有没有好的方案呀?
      2021-02-22
      回复
    • 华培萱🦉
      华培萱🦉
      2021-02-22回复Yrobot
      目前主要还是通过eventBus 的形式实现吧,对于异步组件需要在原page上先手动定义一个 onReachBottom 空方法
      2021-02-22
      1
      回复
登录 后发表内容
问题标签