React Native快速入门:构建你的第一个APP

星河程序员
2025-12-16 17:19
阅读 935

大家好,我是一名工作5年的后端开发工程师。虽然主职是写服务端代码,但这些年也带过不少新人做全栈项目。最近常有朋友问我:“能不能用 JavaScript 写手机 App?”答案是:当然可以!而最主流的选择之一,就是 React Native

我当初学的时候,被各种“原生”、“桥接”、“JS 引擎”这些词绕得晕头转向。其实,它没那么复杂——你可以把它理解成:用写网页的方式,写出能跑在手机上的 App。今天这篇教程,我就用最直白的语言,带你从零开始,亲手做出你的第一个 React Native 应用。

📌 重点提醒:本文虽为入门,但会融入最佳实践,避免你走我当年踩过的坑。


一、什么是 React Native?

React Native(简称 RN)是由 Facebook 开源的一套跨平台移动开发框架。它允许你使用 JavaScript + React 的语法,同时构建 iOS 和 Android 应用。

  • 不是“网页套壳”(像早期的 Cordova)
  • 真正调用原生组件(按钮、文本框等都是系统原生的)
  • 一套代码,两平台运行(iOS + Android)

💡 类比:如果你会做披萨(React),那 React Native 就是教你用同样的配方,在意大利和纽约同时开分店(iOS 和 Android)。


二、环境准备:5 分钟搭好开发工具

别怕!现在官方提供了超简单的工具链。我们只需要安装以下两个核心工具

工具 作用 安装命令
Node.js 运行 JavaScript 的环境 官网下载(选 LTS 版)
Expo CLI 快速启动 RN 项目的脚手架工具 npm install -g expo-cli

✅ 建议:新手强烈推荐使用 Expo!它封装了原生配置,让你专注写业务逻辑,不用碰 Xcode 或 Android Studio。

验证安装

node -v   # 应输出 v18.x 或更高
npm -v    # 应输出 8.x 或更高
expo --version  # 应输出 6.x 或更高

创建你的第一个项目

expo init MyFirstApp
# 选择 "blank (TypeScript)" 模板(更规范)
cd MyFirstApp
npm start

此时会打开一个浏览器窗口(Metro 打包器),并提示你用手机扫码预览。

📱 在手机上安装 Expo Go App(iOS/Android 应用商店搜索),扫码即可实时看到你的 App!


三、核心概念:3 个必须懂的关键词

1. 组件(Component)

RN 中一切皆组件。就像搭积木,View 是盒子,Text 是文字,Image 是图片。

import { View, Text } from 'react-native';

export default function App() {
  return (
    <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
      <Text>Hello, React Native!</Text>
    </View>
  );
}

🔍 注意:这里用的是 react-native 里的 ViewText,不是 HTML 的 <div><p>

2. 样式(StyleSheet)

不能直接写 CSS,但可以用 JavaScript 对象模拟。

import { StyleSheet } from 'react-native';

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    padding: 20
  },
  title: {
    fontSize: 24,
    fontWeight: 'bold'
  }
});

// 使用:style={styles.container}

3. 状态(State)

useState 控制数据变化,自动更新界面。

import { useState } from 'react';

export default function Counter() {
  const [count, setCount] = useState(0);
  
  return (
    <View>
      <Text>点击了 {count} 次</Text>
      <Button title="点我" onPress={() => setCount(count + 1)} />
    </View>
  );
}

四、实战项目:做一个“笑话爬虫”小工具

既然你提到了 爬虫工具,我们就做一个实用的小 App:从公开 API 获取随机笑话,并展示出来

⚠️ 注意:真正的“爬虫”通常指抓取网页内容,但在移动端受限于安全策略,一般通过调用公开 API 获取数据。这在实际开发中更常见、更合规。

步骤 1:安装网络请求库

npm install axios

步骤 2:编写获取笑话的函数

我们使用免费 API:https://official-joke-api.appspot.com/random_joke

import axios from 'axios';
import { useState, useEffect } from 'react';
import { View, Text, Button, ActivityIndicator } from 'react-native';

export default function JokeApp() {
  const [joke, setJoke] = useState(null);
  const [loading, setLoading] = useState(false);

  const fetchJoke = async () => {
    setLoading(true);
    try {
      const res = await axios.get('https://official-joke-api.appspot.com/random_joke');
      setJoke(res.data);
    } catch (error) {
      console.error(error);
      alert('获取失败,请重试');
    } finally {
      setLoading(false);
    }
  };

  // 首次加载时获取一条笑话
  useEffect(() => {
    fetchJoke();
  }, []);

  return (
    <View style={{ flex: 1, padding: 20, justifyContent: 'center' }}>
      {loading ? (
        <ActivityIndicator size="large" />
      ) : joke ? (
        <>
          <Text style={{ fontSize: 18, marginBottom: 20 }}>{joke.setup}</Text>
          <Text style={{ fontSize: 16, fontStyle: 'italic' }}>{joke.punchline}</Text>
          <Button title="换一个" onPress={fetchJoke} />
        </>
      ) : null}
    </View>
  );
}

步骤 3:替换 App.tsx 内容

把上面的 JokeApp 组件设为默认导出,保存后 Expo 会自动刷新!

✅ 恭喜!你刚刚完成了一个具备网络请求能力的工具型 App!


五、新手常见问题 & 避坑指南

问题 原因 解决方案
扫码后白屏或报错 网络问题或 IP 地址不匹配 确保电脑和手机在同一 WiFi;在 Metro 窗口按 ia 用模拟器
修改代码没反应 缓存未清除 在 Metro 窗口按 r 刷新,或重启 npm start
样式不生效 写了 CSS 语法(如 margin-top 必须用驼峰命名:marginTop
真机调试卡顿 开发模式性能较低 发布正式版会快很多,开发时忍一忍

🛑 重要提醒:不要在 RN 里直接写 document.getElementById —— 这是浏览器 API,手机里没有!


六、下一步学习建议

你已经迈出了关键一步!接下来建议:

  1. 深入学习 React 基础:Hooks(useEffect, useContext)、组件通信
  2. 尝试导航:安装 @react-navigation/native 实现多页面跳转
  3. 本地存储:用 AsyncStorage 保存用户偏好
  4. 真机发布:学习如何打包成 .apk 或提交到 App Store
  5. 探索原生模块:当 Expo 能力不够时,再接触原生开发

💬 我当初花了两周才搞懂样式布局,但坚持下来后,现在三天就能搭出一个 MVP。编程不是比谁聪明,而是比谁愿意多试一次


结语

今天我们用不到 100 行代码,做出了一个能联网、能交互、能在手机上运行的工具 App。虽然它简单,但背后是完整的移动开发生态:组件化思想 + 网络请求 + 状态管理

记住:所有复杂的 App,都是从 “Hello World” 开始的。你现在拥有的,不是一个笑话 App,而是一把打开移动开发大门的钥匙。

快去试试吧!遇到问题,欢迎在评论区留言——就像当年有人帮我一样,我也乐意拉你一把。

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝