核心特性
React Native 的设计哲学和关键技术特性
跨平台开发
一套代码,同时运行在iOS和Android平台。开发效率高,维护成本低。
原生性能
使用原生组件,性能接近原生应用。支持原生模块扩展。
热重载
支持热重载,修改代码后立即生效。开发体验流畅,效率高。
React生态
使用React语法和生态。Web开发者可快速上手,代码可复用。
生态系统
围绕 React Native 构建的完整工具链
Expo
React Native开发工具链。提供开箱即用的开发环境,简化开发流程。
React Navigation
React Native导航库。支持栈导航、标签导航、抽屉导航等。
NativeBase
跨平台UI组件库。提供丰富的原生风格组件。
React Native Paper
Material Design组件库。提供Material Design风格的UI组件。
状态管理
支持Redux、Zustand、MobX等状态管理库。与React生态完全兼容。
测试工具
支持Jest、React Native Testing Library等测试工具。单元测试、组件测试。
快速入门
# 使用Expo创建项目
npx create-expo-app my-app
cd my-app
# 启动开发服务器
npx expo start
# 在模拟器中运行
# iOS: 按 i 键
# Android: 按 a 键
# 创建组件
import React from "react";
import { View, Text, StyleSheet, Button } from "react-native";
export default function App() {
const [count, setCount] = React.useState(0);
return (
<View style={styles.container}>
<Text style={styles.text}>Count: {count}</Text>
<Button title="Increment" onPress={() => setCount(count + 1)} />
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: "center",
alignItems: "center"
},
text: {
fontSize: 24,
marginBottom: 20
}
});
配置示例
// React Native配置
// app.json
{
"expo": {
"name": "My App",
"slug": "my-app",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"userInterfaceStyle": "light",
"splash": {
"image": "./assets/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"assetBundlePatterns": ["**/*"],
"ios": {
"supportsTablet": true,
"bundleIdentifier": "com.myapp"
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
"backgroundColor": "#FFFFFF"
},
"package": "com.myapp"
}
}
}
// 依赖配置
// package.json
{
"dependencies": {
"expo": "~50.0.0",
"react": "18.2.0",
"react-native": "0.73.2",
"@react-navigation/native": "^6.1.9",
"@react-navigation/native-stack": "^6.9.17",
"react-native-safe-area-context": "4.8.2",
"react-native-screens": "~3.29.0"
},
"devDependencies": {
"@babel/core": "^7.20.0",
"@types/react": "~18.2.45",
"typescript": "^5.1.3"
}
}
学习资源
与其他跨平台框架对比
vs Flutter
React Native使用JavaScript,Web开发者易上手。Flutter性能更好,UI一致性更强。
vs Ionic
React Native使用原生组件,性能更好。Ionic使用WebView,开发更简单。
vs .NET MAUI
React Native使用JavaScript,生态更丰富。.NET MAUI使用C#,适合.NET开发者。