草庐IT

小程序开发.uniapp.生命周期

jcLee95 2023-04-17 原文
小程序开发.uniapp.生命周期

【内容介绍】: uniapp中生命周期相关内容

相关文章推荐:

标题链接
《小程序开发.概述与环境搭建》https://blog.csdn.net/qq_28550263/article/details/125860530
《小程序开发.mpvue.架构简介》https://blog.csdn.net/qq_28550263/article/details/125881363
《VUE实例及其生命周期解析(vue2 与 vue3 比较)》https://blog.csdn.net/qq_28550263/article/details/123408367
《小程序开发.mpvue.生命周期选项》https://blog.csdn.net/qq_28550263/article/details/125883991
《小程序开发.mpvue.生命周期选项》https://blog.csdn.net/qq_28550263/article/details/125883991
jcLee95 的个人博客
邮箱 :291148484@163.com
CSDN 主页https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343
本文地址https://blog.csdn.net/qq_28550263/article/details/125883991

目 录

1. 概述

2. 应用生命周期

3. 页面生命周期

4. 组件生命周期


1. 概述

uniapp 生命周期是以 小程序生命周期 为基础实现的,分为 应用生命周期页面生命周期组件生命周期。 其中 组件生命周期 就是 vue生命周期

u n i a p p 生命周期 { 应用生命周期; 页面生命周期; 组件生命周期。 = > 即 v u e 生命周期 uniapp 生命周期 \begin{cases} 应用生命周期;\\ 页面生命周期;\\ 组件生命周期。 => 即 vue生命周期 \end{cases} uniapp生命周期 应用生命周期;页面生命周期;组件生命周期。=>vue生命周期

2. 应用生命周期

函数描述说明
onLaunch当 uniapp 初始化完成时发生调用全局只会触发一次
onShow当 uniapp 启动或从后台进入前台时发生调用即用于监听用户进入小程序
onHide当 uniapp从前台进入后台时发生调用即用于监听用户离开小程序
onError当 uniapp 报错时被触发-
onUniNViewMessage对 nvue 页面发生的数据进行监听-
onUnhandledRejection对未处理的 Promise 拒绝事件进行监听-
onPageNotFound页面不存在监听函数-
onThemeChange监听系统主题的变化-

3. 页面生命周期

函数描述说明使用平台
onLoad监听页面加载,其参数为上一个页面传递的数据,参数类型为 object主要是用于页面传参。
onShow监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面返回当前页面。
onReady监听页面初次渲染完成。如果页面渲染速度快,会在页面进入动画前触发。
onHide监听页面隐藏。-
onUnload监听页面卸载。-
onResize监听窗口尺寸的变化。-微信小程序、App
onPullDownRefresh监听用户下拉动作。-
onReachBottom监听页面上拉触底事件。多用于上拉加载更多数据。
onTabItemTab点击 TabBar 时触发,参数类型为 object-微信小程序、百度小程序、H5、App自定义组件
onShareAppMessage用户点击右上角分析时触发可以用于在分享时设置分析标题、路径等
onShareTimeline用户点击右上角转发到朋友圈时触发-微信小程序v2.8.1+
onAddToFavorites用户点击右上角收藏时触发-微信小程序v2.8.1+
onPageScroll监听页面滚动,参数为 object类型-微信小程序、支付宝小程序、字节小程序、百度小程序
onNavigationBarButtonTap监听原生标题栏按钮点击事件,参数为object类型-H5、App。 1.6.0
onNavigationBarSearchInputChanged监听原生标题栏搜索输入框输入内容变化事件-H5、App 。1.6.0
onNavigationBarSearchInputConfirmed监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的 “搜索”按钮时触发H5、App 。
onNavigationBarSearchInputClicked监听原生标题栏搜索输入框点击事件-H5、App 。1.6.0
onBackPress监听用户点击右上角收藏-微信小程序v2.8.1+

4. 组件生命周期

uniapp 的组件生命周期和 Vue 标准组件生命周期相同。在 当前版本的 uniapp 中,你既可以选择使用 vue2 进行开发,也可以使用 vue3 进行开发。有关 vue2 和 vue3 生命周期的详细讲解和比较说明,请参考博文《VUE实例及其生命周期解析(vue2 与 vue3 比较)》

4.1 在 uniapp 中建立 vue2 和 vue3项目的方式

打开Hbuilder软件,依次点击文件=》新建=》项目

可以看到弹出如图所示对话框:

你可以通过选择 Vue版本选择 中的选项来指定初始化一个 Vue2 或者 Vue3项目。其中选项 2 表示 vue2,选项 3 表示 vue3.

4.2 Vue 2 生命周期介绍

在Vue2中,这些时间关键点分别为 CreateMountUpdateDestroy。这里要指出的是,不论是创建、挂载,还是更新、销毁,都是需要时间的,也就是他们都是一个时间段。由于这些过程都是Vue框架为我们完成的,也不需要我们进行处理,因此我们完全可以将这几个过程认作时间点。具体而言,这四个点的功能和特点如下:

  • Create: Vue实例创建
  • Mount: Vue实例挂载
  • Update: Vue实例数据更新
  • Destroy: Vue实例销毁

还有一些特殊的生命周期钩子,说他们特殊是因为他们用于特定的场景。如activateddeactivatederrorCaptured。这一部分将在 后续 讲述。

Vue2生命周期函数描述
beforeCreate在实例初始化之后,进行数据侦听和事件/侦听器的配置之前同步调用。
created在实例创建完成后被立即同步调用。
beforeMount在挂载开始之前被调用
相关的 render 函数首次被调用。
mounted实例被挂载后调用
这时 el 被新创建的 vm.$el 替换了。
beforeUpdate数据更新时被调用,发生在虚拟DOM达不到之前。
updated在数据更改导致的虚拟 DOM 重新渲染和更新完毕之后被调用。
beforeDestroy实例销毁之前调用。在这一步,实例仍然完全可用。
destroyed实例销毁后调用。该钩子被调用后,对应 Vue 实例的所有指令都被解绑,所有的事件监听器被移除,所有的子实例也都被销毁。

4.3 Vue 3 生命周期介绍

Vue3生命周期选项描述Vue3 生命周期钩子描述
beforeCreate在组件实例初始化完成之后立即调用不需要-
created在组件实例处理完所有与状态相关的选项后调用不需要-
beforeMount在组件被挂载之前调用onBeforeMount()注册一个钩子,在组件被挂载之前被调用
mounted在组件被挂载之后调用onMounted()注册一个回调函数,在组件挂载完成后执行
beforeUpdate在组件即将因为一个响应式状态变更而更新其 DOM 树之前调用onBeforeUpdate()注册一个钩子,在组件即将因为响应式状态变更而更新其 DOM 树之前调用
updated在组件即将因为一个响应式状态变更而更新其 DOM 树之后调用onUpdated()注册一个回调函数,在组件因为响应式状态变更而更新其 DOM 树之后调用
beforeUnmount在一个组件实例被卸载之前调用onBeforeUnmount()注册一个钩子,在组件实例被卸载之前调用
unmounted在一个组件实例被卸载之后调用onUnmounted()注册一个回调函数,在组件实例被卸载之后调用

有关小程序开发.uniapp.生命周期的更多相关文章

  1. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  2. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  3. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  4. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  5. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  6. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  7. ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗? - 2

    刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr

  8. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  9. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  10. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

    我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

随机推荐