面试官:请说说微信小程序的生命周期

小程序生命周期指的是在小程序运行过程中,不同阶段会依次触发的一系列函数。这些函数包括应用级生命周期和页面/组件级生命周期,可以让开发者在不同的生命周期节点执行相应的操作,以便更好地控制小程序的行为和响应用户的操作。

微信小程序生命周期包括以下几个阶段:

  1. App 生命周期

    • onLaunch:小程序初始化时触发,全局只触发一次。
    • onShow:小程序启动或从后台进入前台显示时触发。
    • onHide:小程序从前台进入后台隐藏时触发。
    • onError:小程序发生脚本错误或 API 调用失败时触发。
  2. 页面生命周期

    • onLoad:页面加载时触发。
    • onShow:页面显示时触发。
    • onReady:页面初次渲染完成时触发。
    • onHide:页面隐藏时触发。
    • onUnload:页面卸载时触发,如 wx.redirectTowx.navigateBack 到其他页面时。
  3. 组件生命周期

    • created:组件实例被创建时触发。
    • attached:组件被加入到父组件中时触发。
    • ready:组件在视图层布局完成后触发。
    • moved:组件被移动到另一个节点时触发。
    • detached:组件实例被从页面节点树中移除时触发。

以上是微信小程序的生命周期函数,这些函数可以让开发者在不同的生命周期节点执行相应的操作,以便更好地控制小程序的行为和响应用户的操作。

微信小程序应用级生命周期函数及其示例:

  1. onLaunch:小程序初始化时触发,全局只触发一次。通常用于进行一些初始化操作。

    App({
      onLaunchfunction ({
        console.log('小程序初始化完成')
      }
    })
  2. onShow:小程序启动或从后台进入前台显示时触发。通常用于获取用户信息、判断是否登录等操作。

    App({
      onShowfunction (options{
        console.log('小程序显示', options)
      }
    })
  3. onHide:小程序从前台进入后台隐藏时触发。通常用于保存用户数据、暂停音乐播放等操作。

    App({
      onHidefunction ({
        console.log('小程序隐藏')
      }
    })
  4. onError:小程序发生脚本错误或 API 调用失败时触发。通常用于对错误进行处理,如记录错误日志等操作。

    App({
      onErrorfunction (msg{
        console.log('小程序出错', msg)
      }
    })

这些生命周期函数都可以在 App() 函数中定义,并且可以根据需要进行添加和修改。

微信小程序生命周期函数的使用需要注意以下几点:

  1. 生命周期函数执行顺序:在小程序的运行过程中,不同的生命周期函数会按照一定的顺序依次触发,开发者需要根据实际需求来决定在何时执行相应的操作。

  2. 异步操作:生命周期函数中可能包含异步操作,如网络请求、定时器等。在这种情况下,需要使用回调函数或 Promise 对象等方式来保证异步操作的正确执行。

  3. 页面传参:在小程序中跳转到其他页面时,可以通过 URL 参数传递数据。开发者需要在 onLoad 函数中获取参数并进行处理。

  4. 数据缓存:在小程序中,可以使用 wx.setStoragewx.getStorage 等 API 将数据保存到本地缓存中。这些数据可以在小程序的不同页面中共享和访问,可以用于存储用户信息、配置项等数据。

  5. 性能优化:在开发小程序时,应尽量避免频繁的页面跳转、渲染大量数据等操作,以提高小程序的性能和体验。

在实际开发中,需要结合具体场景来灵活使用生命周期函数,并根据实际情况进行优化和调整。

微信小程序页面级生命周期函数及其示例:

  1. onLoad:页面加载时触发。通常用于获取页面参数、初始化数据等操作。

    Page({
      onLoadfunction (options{
        console.log('页面加载', options)
      }
    })
  2. onShow:页面显示时触发。通常用于刷新页面数据、重新加载组件等操作。

    Page({
      onShowfunction ({
        console.log('页面显示')
      }
    })
  3. onReady:页面初次渲染完成时触发。通常用于获取 DOM 节点、创建动画等操作。

    Page({
      onReadyfunction ({
        console.log('页面渲染完成')
      }
    })
  4. onUnload:页面卸载时触发,如 wx.redirectTowx.navigateBack 到其他页面时。通常用于保存页面数据、取消订阅事件等操作。

    Page({
      onUnloadfunction ({
        console.log('页面卸载')
      }
    })

这些生命周期函数也可以在 Page() 函数中定义,并且可以根据需要进行添加和修改。

微信小程序页面生命周期函数的执行顺序如下:

  1. onLoad:页面加载时触发,可以获取页面参数。
  2. onShow:页面显示时触发,可以刷新页面数据等操作。
  3. onReady:页面初次渲染完成时触发,可以获取 DOM 节点等操作。
  4. onHide:页面隐藏时触发,可以保存页面数据等操作。
  5. onUnload:页面卸载时触发,如 wx.redirectTowx.navigateBack 到其他页面时。

在页面被创建后,会首先触发 onLoad 函数,然后依次触发 onShowonReady 等函数。当页面被隐藏时(如跳转到其他页面),会触发 onHide 函数,当页面被卸载时(如通过 wx.redirectTowx.navigateBack 返回到其他页面),会触发 onUnload 函数。

需要注意的是,在调用 wx.navigateTowx.redirectTo 跳转到另一个页面时,新页面的 onLoad 函数会在新页面打开前就已经执行了,而原来的页面的 onUnload 函数则会在新页面打开后才执行。

微信小程序组件生命周期函数的应用实例:

Component({
  // 组件的属性列表,用于传递数据
  properties: {
    text: {
      typeString,
      value'Hello World'
    }
  },
  
  // 组件的初始数据,可以通过 this.data 获取
  data: {
    count0
  },

  // 生命周期函数,组件被创建时触发
  createdfunction({
    console.log('组件被创建')
  },

  // 生命周期函数,组件被加入到父组件中时触发
  attachedfunction({
    console.log('组件被添加到页面')
  },

  // 生命周期函数,组件初次渲染完成时触发
  readyfunction({
    console.log('组件渲染完成')
  },

  // 生命周期函数,组件被移动到另一个节点时触发
  movedfunction({
    console.log('组件被移到其他节点')
  },

  // 生命周期函数,组件被从页面节点树中移除时触发
  detachedfunction({
    console.log('组件被移除')
  },

  // 组件的方法列表
  methods: {
    handleClickfunction({
      this.setData({
        countthis.data.count + 1
      })
    }
  }
})

在上面的示例中,我们定义了一个名为 my-component 的组件,并指定了它的属性列表、初始数据、生命周期函数和方法列表。具体来说:

  1. 在属性列表中定义了一个名为 text 的属性,用于传递文本数据,默认值为 'Hello World'
  2. 在初始数据中定义了一个名为 count 的变量,用于存储计数器的值,默认值为 0
  3. 在生命周期函数中实现了组件创建、添加、渲染、移动和移除等不同阶段的操作,每个生命周期函数都会在相应的阶段触发。
  4. 在方法列表中定义了一个名为 handleClick 的方法,用于处理点击事件并更新计数器的值。

通过这些生命周期函数,我们可以在不同的组件生命周期阶段执行不同的操作,以便更好地控制组件的行为和响应用户的操作。

最后

给“前端面试题宝典”的辅导服务打下广告,我们目前有面试全流程辅导简历指导模拟面试零基础辅导付费咨询等增值服务,感兴趣的伙伴可以联系小助手(微信号:interview-fe)了解详情哦~