taro生命周期详解

2023-11-04

taro介绍

taro是以react为基础的多端混合开发工具,使用 Taro,我们可以只书写一套代码,再通过 Taro 的编译工具,将源代码分别编译出可以在不同端(微信 / 京东 / 百度 / 支付宝 / 字节跳动 小程序、快应用、H5、React-Native 等)运行的代码。
所以taro的生命周期不仅包含了react的相关钩子函数,还包括兼容微信小程序的而设置的钩子函数

生命周期

react的钩子函数

函数名 作用
render(){} 渲染页面
constructor(){} 初始化页面的属性与状态
componentWillMount(){} 第一次渲染之前执行,只执行一次
componentDidMount(){} 第一次渲染之后执行,只执行一次
shouldComponentUpdate 页面是否需要更新,当返回false时不会再次触发render函数即不再更新视图
componentWillUpdate state数据更新前,多次更新多次触发
componentDidUpdate state数据更新之后,多次更新多次触发
componentWillReceiveProps 当props改变时触发
componentDidShow 显示时触发
componentDidHide 隐藏时触发
componentWillUnmount 卸载时执行
componentDidCatchError 错误监听函数
componentDidNotFound 页面不存在监听函数

为兼容小程序的钩子函数

函数名 作用
componentDidShow 显示时触发
componentDidHide 隐藏时触发
onPullDownRefresh 页面相关事件处理函数–监听用户下拉动作
onReachBottom 页面上拉触底事件的处理函数
onShareAppMessage 用户点击右上角转发
onPageScroll 页面滚动触发事件的处理函数
onTabItemTap 当前是 tab 页时,点击 tab 时触发
componentWillPreload 预加载,只在微信小程序中可用

个别生命周期详解以及注意

1.render()函数

当被调用时,render 方法必须返回return一个 Taro 组件(可以是内置组件也可以是自定义组件)或一个 falsy 的值。

render() 函数应该纯净,意味着其不应该改变组件的状态,其每次调用都应返回相同的结果,同时不直接和浏览器/小程序交互。若需要和浏览器/小程序交互,将任务放在componentDidMount() 阶段或其他的生命周期方法。保持 render() 方法纯净使得组件更容易思考。

2.constructor()构造函数

Taro 组件的构造函数constructor()将会在mounted挂载之前被调用。当为一个 Taro.Component 子类定义构造函数时,你应该在任何其他的表达式之前调用 super(props)。否则,this.props 在构造函数中将是未定义,并可能引发异常。

构造函数constructor()是初始化状态的合适位置。若你不初始化状态且不绑定方法,那你也不需要为你的 Taro 组件定义一个构造函数,即不需要引入constructor函数。

在 Taro 中对小程序的兼容方面,即便你不写 constructor(),编译到微信小程序时也会自动给你加上,因为 Taro 运行时框架需要在 constructor() 中多做一些事情。

可以基于属性来初始化状态。这样有效地“分离(forks)”属性并根据初始属性设置状态。

3.在各个生命周期钩子函数中修改state的属性或者参数

修改state里的属性要用setState()函数,

this.setState({
    counter: 1
  }, () => {
    // 在这个函数内你可以拿到 setState 之后的值
  })

如果直接 使用this.state.counter =1会造成视图不响应

4频繁调用setState后性能下降网页变卡shouldComponentUpdate(){}

当频繁调用setState后网页响应可能会变满,可以使用shouldComponentUpdate函数来做一个类似于守卫拦截器的操纵

shouldComponentUpdate(nextPorps,nextState){
	if(nextState.某个属性名 == 你想要变化后的属性值) return true 
	//这样就会传递给render()函数进行页面响应并且刷新页面
	else return false
	//return false 就不会执行render函数,即视图不在刷新
}

5 componentWillReceiveProps的解释

当生命周期的第一次render时不会调用,但在之后每次render被调用时,或者props接收新的参数的时候会被再次调用,
该方法当props发生变化时执行,初始化render时不执行,在这个回调函数里面,你可以根据属性的变化,通过调用this.setState()来更新你的组件状态,旧的属性还是可以通过this.props来获取,这里调用更新状态是安全的,并不会触发额外的render调用。

componentWillReceiveProps(nextProps){
	//nextProps可以读取更新后的props
	//this.props可以读取更新前的props
	
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

taro生命周期详解 的相关文章

  • plyr包,dplyr包,ggplot2包

    plyr包 dplyr包 ggplot2包 Plyr包 each函数 each 能够把多个函数整合到一个函数中 每个函数必须只能返回一个数值 举例 each min max 1 10 each length mean var rnorm 1
  • 代理IP和Socks5代理:跨界电商智能爬虫的利器与安全卫士

    一 代理IP的智能爬虫引擎 多地区数据采集 代理IP可以模拟不同地区的IP地址 帮助企业实现多地区市场数据的获取 这为精准决策提供了数据基础 规避反爬虫限制 代理IP通过随机切换IP地址 绕过了网站的反爬虫机制 确保数据采集的稳定性和连续性
  • CSS高级篇——HSL颜色

    我们已经学习过三种定义 CSS 颜色的方式 名称 RGB 以及 16 进制值 CSS3 又带来了另一种颜色定义方式 HSL 三个字母分别表示色相 Hue 饱和度 Saturation 和亮度 Lightness HSL 和 RGBa a 表
  • ajax请求队列,使AJAX队列稍后解析请求

    它确实显示您的信息流不正确 您只需不能作出 第一个 AJAX请求 直到第二个完成并分配了ID 在本质上 你只需要的是等待被提交标签本地列表 var tags 和办法标签添加到列表 Add a new tag to the queue fun
  • Qt笔记(二十八)之使用QWebEngineView显示网页

    一 QWebEngineView介绍 The QWebEngineView class provides a widget that is used to view and edit web documents QWebEngineView
  • 正本棋道:二间低夹

    二间低夹 正本棋道 搜索结果 哔哩哔哩 Bilibili 1 正本棋院课程 AI定式之小目二间低夹的第1种小变化 正本棋院课程 AI定式之小目二间低夹的一个小变化 1 哔哩哔哩bilibili 2 正本棋院课程 AI定式之小目二间低夹的第2
  • 融云 CallPlus SDK 上线!1V1 音视频、远程服务类应用的实现利器

    点击报名 9 月 21 日融云直播课 近期 融云新一代音视频通话场景化 SDK CallPlus 将正式上线 关注 融云全球互联网通信云 了解更多 融云 CallPlus 完整封装了拨打 振铃 接听 挂断等整套呼叫流程 支持一对一及群组多人
  • Python之数据类型 一

    数据类型 一 数字num 数字是python中的基本数据类型 数字可细分为四种类型 分别为整数 长整数 浮点数和复数 python作为动态类型语言 在使用数字时无需先声明类型 如下所示 a 1 整数 b 12 5 浮点数 c 2000030
  • Jina 轻松学 —— 部署和运行

    Jina是一个高性能的云原生分布式框架 可以利用它快速开发基于深度学习的神经搜索系统 本期教程将带来关于Jina部署和运行的介绍 让你快速 高效地运行Jina框架 Jina远程部署 JinaD Jina Daemon 简称为JinaD 可实
  • 微信小程序开发文档-萧然 8.28

    这里我开源了一个微信小程序的案例 https gitee com xiaoshixiaoran wechat applet 相关后台接口我会有空用SSM重写一遍再挂上去 准备工作 微信小程序官网 https mp weixin qq com
  • Iriun Webcam initialization Failed Error code -1

    管理员运行命令提示符 command prompt 依次运行 ipconfig flushdns 回车 netsh winsock reset 回车 重新安装iriun webcam 默认路径C盘即可
  • Windows 定时任务 设置某bat文件在开机 MySQL启动后启动

    To ensure that a Windows scheduled task starts after a specific Windows service you can follow these steps 1 Open the Ta
  • Error: EBUSY: resource busy or locked 报错(vue)

    用 npm i 安装依赖的时候报错 Error EBUSY resource busy or locked lstat C swapfile sys 下面是我总结的一些有效方法 方法一 删除 node modules 然后再安装 npm i
  • Notepad++删除奇数行(偶数行)

    删除奇数行 Ctrl F查找 开正则 查找 n n n 替换为 1 删除奇数行 在第一行敲一个回车 然后执行删除奇数行操作即可
  • 性能测试 —— Jmeter事务控制器

    事务 性能测试中 事务指的是从端到端 一个完整的操作过程 比如一次登录 一次 筛选条件查询 一次支付等 技术上讲 事务就是由1个或多个请求组成的 事务控制器 事务控制器类似简单控制器 把单个或者多个请求做成一个整体业务 它包含了2个选项 更
  • 【算法与数据结构】654、LeetCode最大二叉树

    文章目录 一 题目 二 解法 三 完整代码 所有的LeetCode题解索引 可以看这篇文章 算法和数据结构 LeetCode题解 一 题目 二 解法 思路分析 算法与数据结构 106 LeetCode从中序与后序遍历序列构造二叉树这两道题有
  • mkfs.jffs2工具安装

    安装mkfs jffs2工具 unrar free x rar tar jxvf mtd snapshot 20050519 tar bz2 mtd snapshot 20050519 tar bz2 cd mtd configure 如果
  • KNN算法——基本原理、分类、回归

    算法原理 KNN算法的核心思维 相似度较高的样本 映射到n维空间后 其距离回避相似度较低的样本在距离上更加接近 KNN 即K近邻算法 K近邻就是K个最近的邻居 当需要预测一个未知样本的时候 就由与该样本最接近的K个邻居来决定 KNN既可以用
  • 算法设计与分析期末复习题(史上最详细)

    算法设计与分析期末复习题 一 1 二分搜索算法是利用 A 实现的算法 A 分治策略 B 动态规划法 C 贪心法 D 回溯法 2 下列不是动态规划算法基本步骤的是 A A 找出最优解的性质 B 构造最优解 C 算出最优解 D 定义最优解 3

随机推荐

  • 数据一致性部分算法基础

    分布式部分算法 思考 Zookeeper 是如何保证数据一致性的 这也是困扰分布式系统框架的一个难题 Paxos算法 Paxos算法 一种基于消息传递且具有高度容错特性的一致性算法 Paxos算法解决的问题 就是如何快速正确的在一个分布式系
  • 配置JSTL 解决错误:org.apache.jasper.JasperException

    最近配置JSTL 遇到如下错误 org apache jasper JasperException This absolute uri http java sun com jsf core cannot be resolved in eit
  • SpringBoot进阶-日志等级配置与操作

    SpringBoot进阶 日志等级配置与操作 一 日志等级 二 设置日志等级 三 打印日志 四 自定义日志格式 五 文件记录日志 一 日志等级 trace 最低等级 debug 调试用 通常用于跟踪程序进展 info 记录用 通常用于记录程
  • excel表格vlookup函数怎么用_excel查找函数应用:vlookup多种情景的运用技巧

    编按 哈喽 大家好 VLOOKUP可算得上是查询函数界的大明星 但如何用它同时在两张工作表 甚至多张 如三张 四张工作表中查询需要的数据呢 下面这篇文章就给大家揭晓答案 学习更多技巧 请收藏关注部落窝教育excel图文教程 俗话说一个好汉三
  • SQL server 增删查改

    使用 sqlserver 数据库的基础便是增删改查 下面记录这些常见的数据库指令 首先我的前置条件 是创建了一个数据库 test 并创建了一个 Student 表 表中字段为 Id stuName stuSex stuAge 代码如 下 c
  • 关于PLC的scl语言

    本人小白一个 只是刚刚学习scl 想与大家分享一下 如果您是大佬 请勿喷 在我的理解 PLC就像单片机 而scl语言就像C语言 例如scl语言里的 就是C里的 如果学过C将会事半功倍 SCL语言学习并不需要什么网上视频 譬如我在某宝上买了一
  • python读取apifox测试报告中接口信息

    背景 使用apifox进行了接口测试 但是没有办法对两次的接口测试响应时间进行对比 因为apifox的测试报告是html格式的文件 所以可以读取html 提取出接口信息 接口报告如下 解决思路 语言 python 1 读取html文件内容
  • powershell_基础语法

    文章目录 范围 比较运算符 布尔运算 switch 示例 范围 1 20 for x 1 x lt 10 x x 1 echo x foreach i in 1 20 echo i 比较运算符 eq 等于 ne 不等于 gt 大于 ge 大
  • vue+element ui 中国标准化时间转换日期多种格式

    vue element ui 中国标准化时间转换日期多种格式 最近在做项目的时候用到了DatePicker 日期选择器 结果选好日期获取日期value得到这个玩意儿 有点恶心的中国标准化时间 如果想要转化成2021 04 3或 2021 0
  • 解决 Spring Cloud 部分版本,使用 nacos 做配置中心,报 No spring.config.import property has been defined 的问题

    报错信息如下 Description No spring config import property has been defined Spring 官方给出的解决方案如下 Add a spring config import nacos
  • Spring Cloud服务框架版本升级--JDK10+Gradle4.9+Spring Boot 2.0+Finchley.SR1

    目标 原有版本升级为Spring Boot 2 0与Spring Cloud Finchley SR1 使用gradle管理工程 搭建注册 配置 网关与追踪框架 加入k8s api微服务 环境 IntelliJ IDEA 步骤 版本升级及其
  • 大数据毕业设计 电商用户行为数据分析可视化 - python

    文章目录 0 前言 一 背景描述 二 项目背景 三 数据来源 四 提出问题 五 理解数据 六 数据清洗 6 1缺失值处理 6 2查看数据 6 3一致化处理 6 4查看data user数据集数据类型 6 5数据类型转换 6 6异常值处理 七
  • 对接微信支付接口开发详细步骤

    1 第一步 我们需要从哪里入手 当然我们需要有微信商家账号怎样申请商家账号呢 当然还是需要有一个已经审核过的微信公众号 这样的话 首先你必须先有个审核通过的微信公众号 这里就不说怎么审核公众号了这个公众号比较好弄 如何申请微信商户号 如图
  • ORA-01578的处理

    某天一台数据库测试机出现 ORA 01578 虽说这是测试机但是这是客户用的 随便处理也不行 仔细研究一下 ORA 01578 ORACLE data block corrupted file 2 block 69449 ORA 01110
  • LeetCode(Python)—— 只出现一次的数字(简单)

    只出现一次的数字 概述 给定一个非空整数数组 除了某个元素只出现一次以外 其余每个元素均出现两次 找出那个只出现了一次的元素 你的算法应该具有线性时间复杂度 你可以不使用额外空间来实现吗 输入 2 2 1 输出 1 输入 4 1 2 1 2
  • [机缘参悟-77]:深度思考-《天道》中强势文化、弱势文化与人的行为模式的关系

    目录 一 文化属性与人的行为模式 二 强势文化与弱势文化 2 1 弱势文化的本质与其行为模式 2 2 强势文化的本质与其行为模式 三 强势文化造就强者 弱势文化造就弱者 一 文化属性与人的行为模式 文化 是一个广义词 它的概括面相当的广泛
  • 二分查找算法及其实例

    二分查找算法及其实例 问题一 二分查找 给定一个 n 个元素有序的 升序 整型数组 nums 和一个目标值 target 写一个函数搜索 nums 中的 target 如果目标值存在返回下标 否则返回 1 示例 1 输入 nums 1 0
  • Win7连接网络打印机步骤

    Win7客户端添加网络打印机 1 进入打印机官网 先下载对应型号的打印机驱动 2 找到控制面板 gt 点击硬件和声音 gt 设备和打印机 3 点击添加打印机按钮 选择添加网络 无线或Bluetooth打印机 4 搜索可用的打印机 5 找到对
  • 2023中国民营100强投资趋势

    导读 根据民企注册地了解到 民企100强企业几乎一半分布在华东地区 其次分布在华南 华北和华中地区 从省份来看 广东 浙江是主要分布的省份 企业数量分别是19家 江苏省有14家 北京市有8家 上海市有7家 河北省 山东省各6家 关注公众号
  • taro生命周期详解

    taro生命周期详解 taro介绍 生命周期 react的钩子函数 为兼容小程序的钩子函数 个别生命周期详解以及注意 1 render 函数 2 constructor 构造函数 3 在各个生命周期钩子函数中修改state的属性或者参数 4