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

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

作者: 叽里咕呱 | 来源:发表于2021-11-19 16:48 被阅读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="" />
    

    效果图:

    相关文章

      网友评论

          本文标题:微信小程序开发——小程序生命周期 & 页面生命周期 & 页面相关

          本文链接:https://www.haomeiwen.com/subject/cspdtrtx.html