微信小程序开发component中onload方法不执行

注意注意注意!用Component构造器构造界面时,js里的Page一定要改成Component!!!!!!!!!!!component的onload(attached)要写到lifetimes中,attached是component的onload方法,attached优于onload先执行的。

//index.js
const app = getApp()

Component({
  data: {
    index: [{
      pagePath: "/pages/index/index",
      iconPath: "/images/homeIcon.png",
      selectedIconPath: "/images/homeIconSelected.png",
      text: "首页"
    },
    {
      pagePath: "/pages/store/store",
      iconPath: "/images/storeIcon.png",
      selectedIconPath: "/images/storeIconSelected.png",
      text: "商城"
    },{
      pagePath: "/pages/personalCenter/personalCenter",
      iconPath: "/images/perIcon.png",
      selectedIconPath: "/images/perIconSelected.png",
      text: "我的"
    }]
  },
  /**
   * 组件的属性列表
   */
  properties: {

  },
  lifetimes:{
    attached:function (e) {
	// 这里写onLoad代码!!!!!!!!!!!!!!!!!!!!
	
    }
  },
  pageLifetimes: {
    show() {
      if (typeof this.getTabBar === 'function' &&
        this.getTabBar()) {
        this.getTabBar().setData({
          list:this.data.index,
          selected: 0
        })
      }
    }
  },
  methods:{
    
  },
  onShow: function () {
  },

  onLoad: function () {
  }
})

微信开发者工具中这样讲:

Component({

  behaviors: [],

  // 属性定义(详情参见下文)
  properties: {
    myProperty: { // 属性名
      type: String,
      value: ''
    },
    myProperty2: String // 简化的定义方式
  },

  data: {}, // 私有数据,可用于模板渲染

  lifetimes: {
    // 生命周期函数,可以为函数,或一个在methods段中定义的方法名
    attached: function () { },
    moved: function () { },
    detached: function () { },
  },

  // 生命周期函数,可以为函数,或一个在methods段中定义的方法名
  attached: function () { }, // 此处attached的声明会被lifetimes字段中的声明覆盖
  ready: function() { },

  pageLifetimes: {
    // 组件所在页面的生命周期函数
    show: function () { },
    hide: function () { },
    resize: function () { },
  },

  methods: {
    onMyButtonTap: function(){
      this.setData({
        // 更新属性和数据的方法与更新页面数据的方法类似
      })
    },
    // 内部方法建议以下划线开头
    _myPrivateMethod: function(){
      // 这里将 data.A[0].B 设为 'myPrivateData'
      this.setData({
        'A[0].B': 'myPrivateData'
      })
    },
    _propertyChange: function(newVal, oldVal) {

    }
  }

})
  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
微信小程序的组件开发,`observe`是一个用于监听组件属性变化的属性观察器。当组件属性的值发生变化时,`observe`会触发对应的回调函数。下面是一个示例,展示了如何在微信小程序使用`observe`: 1. 在组件的js文件定义属性和`observe`回调函数: ```javascript Component({ properties: { // 定义一个属性 text: { type: String, value: '', observer: function(newVal, oldVal) { // 监听属性变化的回调函数 console.log('属性 text 的值从', oldVal, '变为', newVal); } } } }) ``` 2. 在页面的wxml文件引入组件,并绑定属性: ```html <view> <!-- 引入组件,并绑定属性 --> <my-component text="{{myText}}"></my-component> </view> ``` 3. 在页面的js文件定义属性值并更新: ```javascript Page({ data: { myText: 'Hello World' }, onLoad: function() { // 延时更新属性值 setTimeout(() => { this.setData({ myText: 'Hello ChitGPT' }); }, 2000); } }) ``` 在以上示例,组件定义了一个名为`text`的属性,并通过`observer`属性指定了一个回调函数。当`text`属性的值发生变化时,回调函数将被触发,并打印出新旧属性值。 在页面引入该组件时,使用`text="{{myText}}"`将页面的`myText`属性绑定到组件的`text`属性上。初始值为`Hello World`。 在页面的`onLoad`生命周期函数,通过`setData`方法更新了`myText`属性的值为`Hello ChitGPT`,并将值更新延时了2秒钟。 当属性值更新时,`observer`回调函数会被触发,并打印出新旧属性值。在这个例子,2秒后控制台将会输出"属性 text 的值从 Hello World 变为 Hello ChitGPT"。 这样,通过使用`observe`可以监听组件属性的变化,并在回调函数执行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开开开心果儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值