框架篇

react

参考

react 生命周期

16.8以后的生命周期:
挂载

  • constructor
  • getDerivedStateFromProps
  • render
  • componentDidMount
    更新
  • getDerivedStateFromProps
  • shouldComponentUpdate
  • render
  • getSnapShotBeforeUpdate
  • componentDidUpdate
    卸载
  • componentWillUnmount

setState到底是异步还是同步

在合成事件和钩子函数中,表现为异步,在原生事件和setTimeout中表现为同步
异步并不是指真实的异步,而是由于react 对 setState的批量更新策略,导致我们在setState之后,无法拿到期望的值。
至于为什么原生事件和setTimeout中为同步,是因为这样的事件处理函数并不是由react托管的,所以无法应用批量更新的策略。

react组件的通信

  • 父子:props
  • 兄弟:找到相同的父节点
  • 深层级通信: context
  • 发布订阅
  • 全局状态管理: 例如redux

React如何进行组件/逻辑复用

  • mixMin
  • 高阶组件HOC (ref传递的问题 不可见性)
  • render props
  • react hooks

HOC Ref传递的问题:官方文档
ref 不会像其他的props一样向下传递,但是使用forwardRef,我们便可以拿到这个ref,并赋到期望的地方

你是如何理解fiber的?

问题:当页面的节点需要大批量更新的时候,React 会递归比对VirtualDOM树,找出需要变动的节点,然后同步更新它们, 一气呵成。这个过程 React 称为 Reconcilation,他会长秋霸占浏览器资源,导致用户触发的事件得不到响应,造成掉帧,卡顿的现象。

React 通过Fiber 架构,让自己的Reconcilation 过程变成可被中断。 '适时’地让出CPU执行权,可以让浏览器及时地响应用户的交互

如下是一些简单的细节:( 嵌套树结构 => 链表结构 递归 => 循环)

React Fiber 是一种基于浏览器的单线程调度算法.
React 16之前 ,reconcilation 算法实际上是递归,想要中断递归是很困难的,React 16 开始使用了循环来代替之前的递归.

Fiber:一种将 recocilation (递归 diff),拆分成无数个小任务的算法;它随时能够停止,恢复。停止恢复的时机取决于当前的一帧(16ms)内,还有没有足够的时间允许计算。

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
热更新框架设计系列课程总体介绍:        本系列课程由《热更新框架设计之Xlua基础》、《热更新框架设计之热更流程与热补丁技术》、《热更新框架设计之游戏客户端框架》三套课程组成。 三套课程是一个不可分割有机的整体,笔者带领大家由浅入深逐级深入 ,领悟热更精髓的基础之上,通过高端架构设计设计出“低耦合”、“低侵入”、“高复用”性的游戏(VR/AR)客户端热更框架。《热更新框架设计之客户端热更框架》课程介绍:        本作是热更框架系列课程中的客户端框架设计与实现部分。理解本作需要之前的所有知识点积累,在其基础之上给学员展现当今商业热更框架中,商业级热更框架的基本原理、设计全过程、实现框架产品等全过程。通过本作学习可以让资深开发人员晋升为游戏架构师、主程、技术总监等职位。        为了更好更快的服务广大学员,本课程分为上、中、下三部分,内容如下:        上部:               UI框架与AB框架整合,重构整合为 “热更新UI框架”。        中部:            “热更新UI框架”与热更流程技术重构整合。              纯Lua框架设计理念与实现。        下部:               复合型热更框架设计与实现。               框架产品加入HotFix功能模块,且功能演示与测试完善。《热更新框架设计之客户端热更框架(中部)》课程介绍:        热更客户端中部,主要就两大部分进行讲解:        第一部分:  “热更新UI框架”与热更流程技术重构整合         这部分“热更新流程实现脚本”与之前的UI框架、AB框架进行无缝的重构与整合进行开发。         这里涉及到很多地方的重构与处理:         1: Unity编辑器脚本中的创建校验文件、拷贝资源文件等的重构。         2: 由于单机版本框架所使用的Resources 目录被彻底取消,所以整个框架中,凡是涉及到Resources的编码部分,均要进行深入加工与修改,例如: ConfigManagerByJson.cs、UIManager.cs、SysDefine、Log、LauguageMgr等。        第二部分: “纯lua框架”整体设计与实现:        本部分是中部课程的核心,也是整个热更新框架的核心部分!        我们需要对商业项目中,业务功能面临经常频繁改动的部分,设计一套可复用、灵活、可扩展、高效率执行的lua框架系统。本框架系统,我们整体考虑采用类似MVC的“分层”结构进行整体架构设计,然后配之以Xlua技术,实现C#脚本与同名lua脚本之间的一对一映射关系。 这样可以使得每个3D/2D的预设对象,自动映射(预设)同名的一个lua控制脚本与一个“lua显示”脚本。        这里的“lua控制”脚本负责加载从服务器端传来的AB(AssetBundle)包资源,以及解析与显示AB包中的资源预设等。这些均为玩家所看不到的部分,所以都定义在控制层的lua脚本中。       对于需要显示的3D/2D 预设资源,我们使用“lua显示”脚本,控制显示的方式、内容与行为(包含事件注册)等。而本部分我们采用了xlua的映射技术,也使得“lua显示”脚本具备了Unity的常用生命周期函数,进一步大大简化了lua编写业务的难度,例如常见的:Awake()、Start()、Update()、OnDestroy()等。具体lua的架构设计如下图所示:           温馨提示:         1: 本套课程需要具备一定的框架理解与驾驭能力,为了更好的理解本作,强烈推荐广大学员首先学完必要的前导课程:“UI客户端框架设计”、“AssetBundle 框架设计”、“lua基础与中级”、以及本课程热更新框架的前两部(Xlua基础、热更流程与热补丁)。         2: 本课程使用Unity2017版本讲解,但是本课程主要讲解开发思想与具体实现技术,所以对Unity版本不敏感。 学员使用后续的Unity2018/19/2020..... 等版本基本没有影响。一、热更新系列(技术含量:中高级):A:《lua热更新技术中级》https://edu.csdn.net/course/detail/27087B:《热更新框架设计之Xlua基础视频课程》https://edu.csdn.net/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.csdn.net/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.csdn.net/course/detail/27132E:《热更新框架设计之客户端热更框架(中)》https://edu.csdn.net/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.csdn.net/course/detail/27136二:框架设计系列(技术含量:中级): A:《游戏UI界面框架设计系列视频课程》https://edu.csdn.net/course/detail/27142B:《Unity客户端框架设计PureMVC视频课程(上)》https://edu.csdn.net/course/detail/27172C:《Unity客户端框架设计PureMVC视频课程(下)》https://edu.csdn.net/course/detail/27173D:《AssetBundle框架设计_框架视频课程》https://edu.csdn.net/course/detail/27169三、Unity脚本从入门到精通(技术含量:初级)A:《C# For Unity系列之入门》https://edu.csdn.net/course/detail/4560B:《C# For Unity系列之基础》https://edu.csdn.net/course/detail/4595C: 《C# For Unity系列之中级》https://edu.csdn.net/course/detail/24422D:《C# For Unity系列之进阶》https://edu.csdn.net/course/detail/24465四、虚拟现实(VR)与增强现实(AR):(技术含量:初级)A:《虚拟现实之汽车仿真模拟系统 》https://edu.csdn.net/course/detail/26618五、Unity基础课程系列(技术含量:初级) A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》 https://edu.csdn.net/course/detail/24643B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》https://edu.csdn.net/course/detail/24645 C:《Unity ECS(二) 小试牛刀》https://edu.csdn.net/course/detail/27096六、Unity ARPG课程(技术含量:初中级):A:《MMOARPG地下守护神_单机版实战视频课程(上部)》https://edu.csdn.net/course/detail/24965B:《MMOARPG地下守护神_单机版实战视频课程(中部)》https://edu.csdn.net/course/detail/24968C:《MMOARPG地下守护神_单机版实战视频课程(下部)》https://edu.csdn.net/course/detail/24979
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值