React Native快速入门:构建你的第一个APP
作者简介:我是一名开源项目维护者,参与过多个React Native社区项目的开发与文档编写。在教学一线带过数百名零基础学员,深知初学者的困惑点在哪里。今天这篇教程,正是为了帮助你少走弯路、快速上手而写的。
为什么我要写这篇教程?
几年前我刚开始接触移动开发时,面对iOS和Android两套完全不同的技术栈,一度感到非常迷茫。直到遇到了React Native——它让我用熟悉的JavaScript就能同时开发两个平台的应用!这简直像发现了一本“魔法书”。
但当时市面上的教程要么太浅(只讲“Hello World”),要么太深(一上来就讲原生模块集成)。所以我决定写一篇真正适合零基础小白的入门教程,结合我多年来的开发心得和实战经验,带你从安装环境到写出第一个可运行的APP。
顺便说一句:虽然本文主题是React Native,但你会发现,编程思维其实和读一本好书籍一样——需要循序渐进、反复练习。至于区块链?别急,文末我会告诉你它和React Native的奇妙联系!
第一步:认识React Native
它到底是什么?
简单来说,React Native 是一个用 JavaScript 编写原生移动应用的框架。由 Facebook(现 Meta)开源,最大的特点是:
- 一套代码,双端运行:写一次代码,可以同时生成 iOS 和 Android 应用。
- 接近原生的性能:不像传统的 WebView 应用,React Native 渲染的是真正的原生组件。
- 热重载(Hot Reload):改完代码不用重新编译,界面自动更新,开发效率极高!
我当初学的时候,最惊喜的就是这点——再也不用等模拟器慢悠悠地重启了!
第二步:搭建开发环境
⚠️ 注意:环境配置是新手最容易卡住的地方。请严格按照以下步骤操作。
所需工具清单
| 工具 | 作用 | 是否必须 |
|---|---|---|
| Node.js (v18+) | 运行 JavaScript 的环境 | ✅ 必须 |
| npm 或 yarn | 包管理工具(推荐 yarn) | ✅ 必须 |
| Android Studio | 开发 Android 应用(含模拟器) | ✅ 必须(即使只做 iOS) |
| Xcode(仅 macOS) | 开发 iOS 应用 | ✅ macOS 用户必须 |
| Expo CLI(可选但推荐) | 简化开发流程的工具链 | ✅ 强烈推荐 |
推荐使用 Expo(对新手极其友好!)
Expo 是一个基于 React Native 的开发平台,它帮你封装了复杂的原生配置,让你专注于写代码。
安装步骤(5分钟搞定):
- 安装 Node.js(去 nodejs.org 下载 LTS 版)
- 打开终端,执行:
npm install -g expo-cli - 创建你的第一个项目:
expo init MyFirstApp - 按提示选择模板(建议选
blank—— 最简单的空白项目) - 进入项目目录并启动:
cd MyFirstApp npm start
💡 小技巧:如果你没有真机,可以用 Android 模拟器或 iOS 模拟器。Expo Go App 也能直接扫码预览(手机应用商店搜 “Expo Go”)。
第三步:核心概念通俗讲
别被“组件”“状态”这些词吓到,我用生活中的例子来解释。
1. 组件(Component) = 乐高积木
想象你在搭乐高——每个小块就是一个“组件”。在 React Native 中,按钮、文字、图片都是组件。你可以把它们组合起来,变成一个完整的页面。
// 示例:一个显示欢迎语的组件
import React from 'react';
import { Text, View } from 'react-native';
export default function Welcome() {
return (
<View>
<Text>Hello, 新手开发者!</Text>
</View>
);
}
View相当于 HTML 的<div>,用来布局Text专门用来显示文字(不能直接在 View 里写文字!)
我当初学的时候就犯过这个错:直接在 View 里写字符串,结果报错。记住:所有文字必须包在
<Text>里!
2. 状态(State) = 可变的数据
状态就是会变化的信息。比如点击按钮后,计数器从 0 变成 1。
import React, { useState } from 'react';
import { Button, Text, View } from 'react-native';
export default function Counter() {
const [count, setCount] = useState(0); // 声明一个状态
return (
<View>
<Text>当前计数:{count}</Text>
<Button title="点我+1" onPress={() => setCount(count + 1)} />
</View>
);
}
useState是 React 的“魔法钩子”,用来创建状态count是当前值,setCount是修改它的函数
3. 样式(StyleSheet) = CSS 的简化版
React Native 不支持普通 CSS,但提供了类似的方式:
import { StyleSheet, Text, View } from 'react-native';
export default function StyledExample() {
return (
<View style={styles.container}>
<Text style={styles.title}>我是标题</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#f0f0f0',
},
title: {
fontSize: 24,
fontWeight: 'bold',
color: '#333',
},
});
📌 提示:所有样式属性都用驼峰命名(如
backgroundColor),不能写background-color。
第四步:实战项目——做一个“读书记录器”
现在,我们用上面的知识,做一个超简单的 APP:记录你最近读的书籍!
功能需求
- 显示书名列表
- 点击“添加”按钮,弹出输入框
- 输入书名后,加入列表
步骤 1:创建项目
expo init BookTracker
cd BookTracker
npm start
步骤 2:编写代码(替换 App.js)
import React, { useState } from 'react';
import {
View,
Text,
TextInput,
Button,
FlatList,
Alert,
StyleSheet
} from 'react-native';
export default function App() {
const [books, setBooks] = useState([]);
const [inputText, setInputText] = useState('');
const addBook = () => {
if (inputText.trim() === '') {
Alert.alert('提示', '请输入书名!');
return;
}
setBooks([...books, inputText]);
setInputText(''); // 清空输入框
};
return (
<View style={styles.container}>
<Text style={styles.title}>📚 我的读书记录</Text>
<TextInput
style={styles.input}
placeholder="输入书名,例如《三体》"
value={inputText}
onChangeText={setInputText}
/>
<Button title="添加书籍" onPress={addBook} />
<FlatList
data={books}
keyExtractor={(item, index) => index.toString()}
renderItem={({ item }) => (
<Text style={styles.bookItem}>• {item}</Text>
)}
style={styles.list}
/>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
paddingTop: 50,
paddingHorizontal: 20,
backgroundColor: '#fff',
},
title: {
fontSize: 28,
fontWeight: 'bold',
textAlign: 'center',
marginBottom: 20,
},
input: {
borderWidth: 1,
borderColor: '#ccc',
padding: 10,
marginBottom: 10,
borderRadius: 5,
},
list: {
marginTop: 20,
width: '100%',
},
bookItem: {
fontSize: 18,
paddingVertical: 5,
},
});
步骤 3:运行并测试
- 在终端运行
npm start - 用手机 Expo Go 扫码,或启动模拟器
- 输入书名(比如《区块链原理与应用》),点击“添加书籍”
- 看看列表是不是更新了?
✅ 恭喜!你刚刚完成了一个有真实功能的 APP!
第五步:常见问题解答(FAQ)
Q1:为什么我的代码改了,但手机上没变化?
- 检查是否开启了“自动刷新”(在 Expo Dev Tools 网页中)
- 手动按
r键(在终端)触发重载 - 如果用真机,确保手机和电脑在同一 WiFi 下
Q2:<Text> 里为什么不能直接写中文?
可以写!但必须包在 <Text> 标签内。错误写法:
<View>你好</View> // ❌ 报错!
正确写法:
<View><Text>你好</Text></View> // ✅
Q3:如何调试错误?
- 看终端的红色错误信息
- 在代码中加
console.log('xxx')打印变量 - 使用 React Developer Tools(需额外配置)
Q4:这个 APP 能上架应用商店吗?
用 Expo 开发的 APP 可以通过 expo build 生成安装包,但功能受限(不能调用某些原生 API)。等你熟悉后,可以“eject”出原生项目,获得更多控制权。
第六步:学习建议 & 下一步方向
我的开发心得
- 不要死记语法:React Native 的 API 很多,用到再查即可。重点是理解“组件化”思想。
- 多写小项目:比如待办事项、天气查询、简易聊天室。每个项目解决一个小问题。
- 善用官方文档:React Native 官网 和 Expo 文档 都很友好。
实战经验分享
在我维护开源项目时,发现新手常犯的错误是:
- 过早优化性能(先让功能跑起来!)
- 忽略错误边界处理(用
Alert或日志捕获异常) - 不拆分组件(一个文件写几百行 → 应拆成多个小组件)
关于区块链的彩蛋 🎁
你可能会问:“教程开头提了区块链,怎么没出现?”
其实,React Native 完全可以开发区块链应用!比如:
- 钱包 APP(用
ethers.js或web3.js) - NFT 展示器
- 去中心化社交平台前端
当你掌握基础后,可以尝试集成 Web3 库,构建连接钱包、查询链上数据的功能。那将是你从“会写APP”到“能做前沿产品”的飞跃!
结语:你的旅程才刚刚开始
今天,你已经迈出了移动开发的第一步。这个“读书记录器”虽然简单,但它包含了 React Native 的核心思想:组件 + 状态 + 事件。
记住:每一本伟大的书籍,都始于第一个字;每一个成功的开发者,都始于第一行代码。
接下来,我建议你:
- 把今天的项目代码自己敲一遍(不要复制粘贴!)
- 尝试添加“删除书籍”功能
- 阅读《React Native 官方入门指南》
如果你觉得这篇教程有帮助,欢迎关注我的 GitHub(开源项目持续更新中)。也欢迎在评论区留言你的问题——我会尽力解答。
编程不是魔法,而是逻辑与耐心的结合。而你,已经上路了。 🚀

评论 0