React Native快速入门:从零构建你的第一个APP
大家好,我是掘金上那个总在写“手把手”教程的全栈工程师。今天这篇《React Native快速入门:从零构建你的第一个APP》,其实源于我最近面试时的一个小感慨——很多同学简历上写着“熟悉React Native”,但连最基础的环境搭建都说不清楚。这让我想起自己刚入行时,也曾对着命令行手足无措。所以,今天我就用最接地气的方式,带你从零开始跑通第一个React Native应用。无论你是学生、转行者,还是只想试试移动端开发的前端小白,这篇教程都能让你迈出第一步。
更重要的是,我会把面试题、代码人生甚至区块链这些看似不相关的词,巧妙融入学习路径中——因为技术从来不是孤立的,真正的工程师要学会在复杂世界里建立连接。
为什么选择React Native?
React Native 是 Facebook 开源的跨平台移动开发框架。它允许你用 JavaScript 和 React 的语法,同时开发 iOS 和 Android 应用,真正做到“一次编写,两端运行”。
我当初学的时候,最吸引我的是它的“热重载”(Hot Reload)功能——改完代码,手机上立刻看到效果,不用反复编译。这种即时反馈,对新手极其友好。
小知识:虽然现在 Flutter 很火,但 React Native 在国内大厂(如字节、美团)仍有广泛应用,面试常考!
环境准备:5分钟搭好开发环境
别被“环境配置”吓到!现在官方工具已经非常成熟。我们使用 Expo ——它是 React Native 的超级简化版,无需配置 Xcode 或 Android Studio 就能快速启动项目。
步骤清单(Mac / Windows / Linux 通用)
安装 Node.js(>=16)
去 nodejs.org 下载 LTS 版本,安装后终端输入:node -v npm -v能看到版本号就说明成功了。
全局安装 Expo CLI
npm install -g @expo/cli创建新项目
npx create-expo-app MyFirstApp cd MyFirstApp npm start扫码预览
运行后会打开一个网页(Expo Dev Tools),用手机下载 Expo Go App(iOS/Android 应用商店搜“Expo Go”),扫描页面上的二维码,即可在真机上看到你的 APP!
✅ 避坑指南:不要一上来就用
react-native init!那是“裸项目”,需要配置原生环境,对新手极不友好。先用 Expo 打基础!
核心概念:3个关键词看懂 React Native
1. 组件(Component) = 积木块
React Native 的 UI 全由组件构成。比如 <Text> 显示文字,<View> 相当于 HTML 的 <div>。
import { View, Text } from 'react-native';
export default function App() {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Hello, 代码人生!</Text>
</View>
);
}
💡 注意:这里用的是
style而不是className,样式写法类似 CSS,但要用 JS 对象。
2. 样式(StyleSheet) = 内联 CSS
React Native 不支持 CSS 文件,所有样式通过 StyleSheet.create 定义:
import { StyleSheet } from 'react-native';
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
title: {
fontSize: 24,
fontWeight: 'bold',
color: '#333'
}
});
然后在组件中使用:<Text style={styles.title}>...</Text>
3. 状态(State) = 让界面动起来
用户交互靠状态驱动。比如点击按钮改变文字:
import { useState } from 'react';
import { Button, Text, View } from 'react-native';
export default function App() {
const [count, setCount] = useState(0);
return (
<View style={{ padding: 20 }}>
<Text>你点击了 {count} 次</Text>
<Button title="点我!" onPress={() => setCount(count + 1)} />
</View>
);
}
🎯 面试题高频考点:
useState是 React Hook,用于在函数组件中管理状态。务必理解其原理!
实战:打造你的第一个“区块链知识卡片”APP
为了呼应关键词 区块链,我们做一个展示区块链基础知识的卡片应用。虽然不涉及真实链上操作(那太复杂),但能让用户了解概念。
第一步:设计数据结构
const blockchainFacts = [
{ id: 1, title: "什么是区块链?", content: "去中心化的分布式账本技术" },
{ id: 2, title: "比特币 vs 以太坊", content: "前者是货币,后者是平台" },
{ id: 3, title: "智能合约", content: "自动执行的代码协议" }
];
第二步:渲染列表
React Native 用 FlatList 渲染长列表(性能比 map 好):
import { FlatList, Text, View, StyleSheet } from 'react-native';
export default function App() {
const renderItem = ({ item }) => (
<View style={styles.card}>
<Text style={styles.cardTitle}>{item.title}</Text>
<Text style={styles.cardContent}>{item.content}</Text>
</View>
);
return (
<FlatList
data={blockchainFacts}
renderItem={renderItem}
keyExtractor={item => item.id.toString()}
contentContainerStyle={styles.list}
/>
);
}
const styles = StyleSheet.create({
list: { padding: 16 },
card: {
backgroundColor: '#f8f9fa',
padding: 16,
marginVertical: 8,
borderRadius: 8,
shadowColor: '#000',
shadowOpacity: 0.1,
shadowRadius: 4,
},
cardTitle: { fontSize: 18, fontWeight: 'bold', marginBottom: 8 },
cardContent: { fontSize: 16, color: '#555' }
});
第三步:添加交互(可选)
你可以加个“刷新”按钮,随机打乱卡片顺序:
import { useState } from 'react';
// 在 App 函数内
const [facts, setFacts] = useState(blockchainFacts);
const shuffle = () => {
const shuffled = [...facts].sort(() => Math.random() - 0.5);
setFacts(shuffled);
};
// 在 FlatList 上方加个按钮
<Button title="随机换卡" onPress={shuffle} />
✅ 保存文件,Expo 会自动热更新!真机上立刻看到效果。
新手常见问题 & 解决方案
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 扫码后白屏或报错 | 网络问题或 Expo 版本不匹配 | 确保手机和电脑在同一 WiFi;升级 Expo Go 到最新版 |
| 样式不生效 | 忘记用 StyleSheet.create 或拼写错误 |
检查属性名(如 backgroundColor 不是 background-color) |
| 按钮点击无反应 | onPress 回调没写对 |
确保是函数:onPress={() => doSomething()} |
| 中文显示乱码 | 字体不支持 | Expo 默认支持中文,若异常可尝试重启项目 |
💬 我当初学的时候,就因为把
justifyContent拼成justfyContent调试了半小时……细节决定成败!
学习建议:从“能跑”到“精通”
完成这个小项目只是起点。接下来,你可以:
深入 React 基础
掌握useEffect、props、组件通信等核心概念。推荐官方文档 React Docs。尝试裸项目(Bare Workflow)
当你需要集成原生模块(如蓝牙、摄像头),就要脱离 Expo,用npx react-native init创建项目。关注性能优化
学习React.memo、useCallback避免不必要的重渲染——这也是面试题常客!拓展视野:区块链 + 移动端
虽然我们的 APP 只是展示知识,但未来你可以:- 用 React Native + Web3.js 连接钱包
- 开发 DApp(去中心化应用)的移动端入口
- 理解“代码即法律”的代码人生哲学
🔮 技术前瞻:随着 Web3 和 AI 的融合,移动端将成为用户接触去中心化服务的第一窗口。掌握 React Native,等于握住了通往下一代互联网的钥匙。
结语:你的代码人生,从此开始
写这篇教程,不只是为了教语法,更是想告诉你:每一个伟大的 APP,都始于一行 console.log('Hello World')。别怕犯错,别怕问“傻问题”——我当年也曾在群里问“View 和 Text 有什么区别”,现在回头看,那正是成长的起点。
技术没有捷径,但有方法。用实践驱动学习,用项目倒逼理解,你的代码人生才会真正启航。
现在,打开终端,输入那几行命令吧。你的第一个 React Native APP,正在等待诞生。
下期预告:《React Native 状态管理怎么选?Redux vs Zustand vs Context API 深度对比》——记得关注我,掘金见!

评论 0