2.1 React Native 是如何工作的?
2.1.1 React 的一个特 点:Virtual DOM
用途:执行 Virtual DOM 的计算,减少浏览器 DOM 的重复渲染
潜力:潜力在于提供了强大的抽象能力。在开 发者的代码与实际的渲染之间加入一个抽象层,这带来了很多可能性。
2.1.2 React Native 工作原理
- 调用 Objective-C 的 API 去渲染 iOS 组件
- 调用 Java 接口去渲染 Android 组件
2.2 渲染周期
说明: React
的
注意:至于 React Native
,生命周期与 React
基本相同,但渲染过程有一些区别
React 组件挂载过程
React 组件重新渲染过程
2.3 在React Native中创建组件
2.3.1 编写视图
DEMO:https://github.com/facebook/react- native#examples
web与React Native 基础元素比较
React | React Native |
---|---|
<div> |
<View> |
<span> |
<Text> |
<li>,<ul> |
<ListView> |
<img> |
<Image> |
其他组件则是平台特定的1
2
3
4
5 <DatePickerIOS
date={this.state.date}
mode="date"
timeZoneOffsetInMinutes={this.state.timeZoneOffsetInHours * 60}
/>
2.3.2 使用 JSX
JSX 认为减少心智负担比文件分离更有用
说明:与 React
中相一致,React Native
也是通过编写 JSX
来设计视图,并将视图标记和控制逻辑 组合在一起成为一个文件
1 | var HelloMessage = React.createClass({ |
2.3.3 原生组件的样式
DEMO:https:// github.com/facebook/react-native/tree/master/Examples/UIExplorer
说明:React
和宿主平台之间的“桥接”包含了一 个缩减版 CSS 子集
的实现。这个 CSS
子集主要通过 flexbox
进行布局,做到了尽量简单 化,而不是去实现所有的 CSS
规则。
1 | // 定义一个样式。 |
2.4 宿主平台接口
注意:React Native
的“桥接”不可能暴露宿主平台全部的接口。如果你需要使用一 个未支持的特性,完全可以自己动手添加到 React Native
中
2.5 小结
说明:使用 React Native 为移动应用编写组件与 Web 环境的 React 相比有一些不同
- JSX 是强制使 用的
- 通过创建组件的方式来开发基本模块
- 通过使用 CSS 的子集编写内联语句的方式来编写样式