收藏
回答

usingComponents 引入页面onLoad未执行

问题模块 框架类型 问题类型 终端类型 微信版本 基础库版本
框架 小程序 Bug 工具 6.5.3 2.7.4

- 当前 Bug 的表现(可附上截图)

usingComponents 引入页面onLoad未执行

- 预期表现

onLoad: function(options) {

console.log(111112);

},

- 复现路径

/pages/landlord/myHouse/myHouse

- 提供一个最简复现 Demo



myHouse 页面 onLoad方法却未执行 这个是为什么了 如何调用onload呢

分享代码如下:

https://developers.weixin.qq.com/s/rfch5Smr7Y9I



/**
 * 生命周期函数--监听页面加载
 */
onLoad: function (options) {
  console.log(111112);
},


onLoad 方法未执行

index.json 引入对应的页面

{
  "usingComponents": {
    "myHouse": "/pages/landlord/myHouse/myHouse",
    "contract": "/pages/landlord/contract/contract",
    "houseControl": "/pages/landlord/houseControl/houseControl",
    "rent": "/pages/landlord/rent/rent",
    "personal": "/pages/landlord/personal/personal"
  }
}

index.wxml

<myHouse wx:if="{{PageCur == 'myHouse'}}"></myHouse>
<contract wx:if="{{PageCur == 'contract'}}"></contract>
<houseControl wx:if="{{PageCur == 'houseControl'}}"></houseControl>
<rent wx:if="{{PageCur == 'rent'}}"></rent>
<personal wx:if="{{PageCur == 'personal'}}"></personal>
<view class="cu-bar tabbar shadow foot">
 
  <view class="action" bindtap="NavChange" data-cur="myHouse">
    <view class='cuIcon-cu-image'>
      <image src="/images/icon/myHouse{{PageCur=='myHouse'?'_cur':''}}.png"></image>
    </view>
    <view class=" {{PageCur=='myHouse'?'text-green':'text-bar'}}">我的房屋</view>
  </view>
 
  <view class="action" bindtap="NavChange" data-cur="contract">
    <view class='cuIcon-cu-image'>
      <image src="/images/icon/contract{{PageCur=='contract'?'_cur':''}}.png"></image>
    </view>
    <view class="{{PageCur=='contract'?'text-green':'text-bar'}}">合同管理</view>
  </view>
 
  <view class="action" bindtap="NavChange" data-cur="houseControl">
    <view class='cuIcon-cu-image'>
      <image src="/images/icon/houseControl{{PageCur=='houseControl'?'_cur':''}}.png"></image>
    </view>
    <view class="{{PageCur=='houseControl'?'text-green':'text-bar'}}">房控</view>
  </view>
 
  <view class="action" bindtap="NavChange" data-cur="rent">
    <view class='cuIcon-cu-image'>
      <image src="/images/icon/rent{{PageCur=='rent'?'_cur':''}}.png"></image>
    </view>
    <view class="{{PageCur=='rent'?'text-green':'text-bar'}}">收租</view>
  </view>
 
  <view class="action" bindtap="NavChange" data-cur="personal">
    <view class='cuIcon-cu-image'>
      <image src="/images/icon/personal{{PageCur=='personal'?'_cur':''}}.png"></image>
    </view>
    <view class="{{PageCur=='personal'?'text-green':'text-bar'}}">个人中心</view>
  </view>
 
</view>


index.js

const app = getApp();
Page({
 
  /**
   * 页面的初始数据
   */
  data: {
    PageCur: 'myHouse',
    // height: app.globalData.height * 2 + 24,
 
  },
 
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
 
  },
 
  /**
   * 页面方法
   */
  NavChange(e) {
    this.setData({
      PageCur: e.currentTarget.dataset.cur
    })
    let page = getCurrentPages().pop();
    if (page == undefined || page == null) {
      return;
    }
    page.onLoad();
 
  },
  onShareAppMessage() {
    return {
      title: '我的房屋',
      // imageUrl: '/images/share.jpg',
      path: 'pages/landlord/myHouse/myHouse'
    }
  },
 
 
 
})


usingComponents 引入的页面 onLoad 方法未执行

这个要如何处理呢?

求大神帮帮忙 给与解答 谢谢


最后一次编辑于  07-15  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

7 个回答

  • 陈式坚
    陈式坚
    07-15

    组件是没有onLoad生命周期的


    这点和Vue之类不同,你把页面也当成组件,那么页面组件就不能用Page注册


    所以,你要么用Tab做。要么就把那几个页面改成

    Component(

    {

    lifetiems: {

    attached() {

    }

    }

    }

    )

    07-15
    赞同 11
    回复 3
    • 亦城
      亦城
      07-15
      感谢解答 但是 我需要 下拉分页加载数据 怎么做呢
      07-15
      赞同
      回复
    • 陈式坚
      陈式坚
      07-15

      如果这么实现,那下拉刷新实现的方法就得自己做


      而触底刷新则可以用scroll-view的lower-threshold去解决

      07-15
      赞同
      回复
    • 亦城
      亦城
      07-18
      感谢回复 一引用第三方能解决https://developers.weixin.qq.com/s/pNcnlXm37r9z
      07-18
      赞同
      回复
  • 仙༊
    仙༊
    07-15

    建议查看下组件的生命周期。

    07-15
    赞同
    回复 2
    • 亦城
      亦城
      07-15
      感谢解答 但是 我需要 下拉分页加载数据 怎么做呢
      07-15
      赞同
      回复
    • 仙༊
      仙༊
      07-16回复亦城
      组件内应该实现不了。下拉刷新 建议外部写好下拉。传递更新后的值给自定义组件即可。
      07-16
      赞同
      回复