微信小程序开发——小程序生命周期 & 页面生命周期 & 页面相关

2021-11-19  本文已影响0人  叽里咕呱

一、小程序的生命周期函数

小程序的生命周期函数是在app.js里面调用的,App(Object)函数用来注册一个小程序。接受一个 Object 参数,指定其小程序的生命周期回调。
小程序的生命周期函数的调用顺序为onLaunch > onShow > onHide。

1、onLaunch 监听小程序初始化

小程序加载时,执行的函数。

  onLaunch() {
    // 通常在这里面发起请求,获取后台数据
    console.log('小程序加载');
  },

2、onShow 监听小程序显示

小程序显示时,执行的函数。

  onShow(){
    console.log('小程序显示');
  },

3、onHide 监听小程序隐藏

小程序隐藏(从前台切换到后台)时,执行的函数。

  onHide(){
    console.log('小程序隐藏');
  }

二、页面的生命周期函数

页面生命周期函数就是当你每进入/切换到一个新的页面的时候,就会调用的生命周期函数。页面的生命周期函数是在app.js里面调用的

1、onLoad 监听页面加载

onLoad函数监听页面加载,对页面状态数据进行初始化。一个页面只会调用一次。onLoad函数的参数可以接收打开当前页面所调用的 query参数。

当前页面跳转detail页面后,调用query参数id。

<navigator url="../detail/detail?id={{item.Id}}" class="item" wx:for="{{subjects}}" wx:key="index">
</navigator>

detail页面中onLoad函数可以获取传递的query参数id。

  onLoad: function (options) {
    //获取传递的参数id
    let {id} = options
  }

2、onReady 监听页面初次渲染完成

页面初次渲染的时候触发,一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。

    onReady: function () {
         console.log('页面初次渲染完成');
    }

3、onShow 监听页面显示

每次打开页面都会触发一次。

    onShow: function () {
         console.log('页面显示');
    }

4、onHide 监听页面隐藏

页面隐藏/切入后台时触发。 如 navigateTo 或底部 tab 切换到其他页面,小程序切入后台等情况下触发。

    onHide: function () {
         console.log('页面隐藏');
    },

5、onUnload 监听页面卸载

页面卸载(真正关闭)时触发,如redirectTo或navigateBack到其他页面时触发。

    onUnload: function () {
         console.log('页面卸载');
    },

三、页面相关事件处理函数

1、onReachBottom 上拉触底

当上拉至底部时就会触发onReachBottom函数来进行相应动作。

    onReachBottom:function(){
          // 操作
    }

2、onPullDownRefresh 下拉刷新

注意:下拉刷新默认是关闭状态,所以需要先在.json文件中设置允许下拉刷新。
enablePullDownRefresh:设置是否开启当前页面下拉刷新。
backgroundColor:设置窗口的背景色。
backgroundTextStyle:下拉 loading 的样式,默认是light,仅支持 dark / light。

{
  "enablePullDownRefresh": true,
  "backgroundColor": "#d1c2d3",
  "backgroundTextStyle": "light"
}

下拉刷新动效有默认时间。如果想改变默认的下拉时间,可以使用定时器。
wx.stopPullDownRefresh() :设置刷新完成后停止下拉刷新动效。

    onPullDownRefresh:function(){
       setTimeout(() => {
           wx.stopPullDownRefresh()
       }, 1000);
    }

3、onShareAppMessage 用户点击右上角分享

    onShareAppMessage: function () {

    }

四、简易双向绑定

1、普通属性绑定

在 WXML 中,普通的属性的绑定是单向的。如果用户修改了输入框里的值,不会同时改变 this.data.value。

    <input class="txt" value="{{value}}" />

2、简易双向绑定

如果需要在用户输入的同时改变 this.data.value ,需要借助简易双向绑定机制。双向绑定指的是:一处被修改,另一处也一起修改。
通过model:value的方式,将表单里面的数据跟js里面的数据进行了双向绑定。

   <input class="txt" model:value="{{value}}" />

3、双向绑定的表达式限制

双向绑定的表达式限制:① 只能是一个单一字段的绑定;② 目前,尚不能 data 路径。
以下写法都是错误的:

   <input model:value="值为 {{value}}" />
   <input model:value="{{ a + b }}" />
   <input model:value="{{ a.b }}" />

五、表单组件

1、picker 选择器组件

range:指定一个数组(指定一份展示的数据)。
range-key:如果range数组是一个对象数组,需要添加range-key属性,指定选择器中显示的内容(从对象身上指定一个属性)。
bindchange:value 改变时触发 change 事件,event.detail = {value}。

<picker class="txt" bindchange="bindPickerChange" range-key="Name" range="{{sections}}">
     <view>
        <!-- 根据选择器选中的索引,显示对应的名称 -->
        {{sections[sectionsActiveIndex].Name}}
     </view>
  </picker>

后台通过e.detail.value获取当前列表value的索引。

bindPickerChange: function(e) {
    console.log(e.detail.value)  //获取下标
}

效果图:

2、input 输入框

placeholder:输入框为空时占位符。

<text class="title">标题:</text>
<input value="" placeholder="请输入标题" />

效果图:

3、textarea 多行文本框

maxlength:最大输入长度。设置为 -1 的时候不限制最大长度。

<textarea maxlength="-1" value="" />

效果图:

上一篇下一篇

猜你喜欢

热点阅读