React Native源码学习

  1. 核心组件
    1. 基础组件:View、Text、Image、TextInput、ScrollView(性能没有FlatList好,因为它会一次性把子元素渲染出来)、StyleSheet
    2. 交互组件:button
    3. 列表视图:FlatList(优先渲染屏幕上可见的元素)、SectionList(可以更好的支持一些需要分组的数据)
  2. 线程模型:
    1. UI线程:主线程,负责绘制UI及监听用户操作
    2. Native线程:负责执行C++代码
    3. JS线程:负责解释执行JS
  3. native层渲染流程:Android暴露UI相关接口给JS侧,JS侧在JS线程进行View的创建或者更新,将对应View封装侧灰姑娘一个任务加到UI任务队列中,并且监听Android的ChoreographerCompat的回调接口,定时在UI线程上从任务队列取出创建、更新等任务并执行,最终视图得以渲染在屏幕上
    1. 创建view:讲JS层传递过来的UI信息包装成一个ReactShadowNode,用来描述DOM树的节点,调用UIViewOperationQueue.enqueueCreateView()方法把UI的操作封装成一个action,放进UI队列中等待执行
    2. 更新view:根据JS层传递过来的UI信息找到对应的ReactShadowNode,调用UIViewOperationQueue.enqueueUpdateProperties() 方法把UI的操作封装成一个 Action,放进UI队列中等待执行。
    3. UI任务的调度
      1. RN引擎初始化时,再UI线程中去初始化ReactChoreographer(RN与Android系统的ChoreographerCompat的一个桥接层,他在渲染链路中负责请求和接收Vsync信号,然后处理回调时间,RN会将UI队列调度的回调三注册到其中,以实现每一次接收Vsync之后,触发执行UI任务的执行)
相关推荐
虾球xz几秒前
游戏引擎学习第286天:开始解耦实体行为
c++·人工智能·学习·游戏引擎
應呈6 分钟前
FreeRTOS的学习记录(任务创建,任务挂起)
java·linux·学习
序属秋秋秋21 分钟前
我的创作纪念日——《惊变256天》
学习·程序人生·学习方法
关于不上作者榜就原神启动那件事1 小时前
git版本控制学习
git·学习
LuckyLay1 小时前
Vue百日学习计划Day9-15天详细计划-Gemini版
前端·vue.js·学习
Coding的叶子1 小时前
React Flow 节点事件处理实战:鼠标 / 键盘事件全解析(含节点交互代码示例)
react.js·交互·鼠标事件·fgai·react agent
持之以恒的天秤2 小时前
线程同步学习
linux·学习
Lester_11012 小时前
嵌入式学习笔记 - STM32 ADC 模块工作模式总结
笔记·学习
小Tomkk7 小时前
2025年PMP 学习十五 第10章 项目资源管理
学习·pmp·项目pmp
it_remember7 小时前
新建一个reactnative 0.72.0的项目
javascript·react native·react.js