React Native快速入门:构建你的第一个APP —— 一个天通苑奶爸的深夜折腾实录
作者:两个娃的爹,坐标北京天通苑,月薪从15k摸爬滚打到22k,房租3500(合租次卧),晚上十点后才敢打开电脑
上周五晚上11点23分,我终于把大宝哄睡——小家伙今天发烧,哭闹到九点半,中间还吐了一次,床单换了两回。老婆瘫在沙发上刷短视频,眼神空洞,像被抽干了灵魂。我轻手轻脚关上儿童房门,蹑手蹑脚走到客厅角落那张二手宜家书桌前,打开MacBook Air,风扇嗡的一声,仿佛在替我叹气。
“今晚必须跑通这个React Native Demo。”我对自己说。
这不是中年危机,这是生存焦虑。
一、为什么是React Native?而不是Flutter、uni-app,甚至……区块链?
去年十月,我还在一家传统To B软件公司写Java后端,每天和Oracle数据库、WebService、SOAP协议打交道。日子稳定,但工资卡在15k动弹不得。有天HR找我聊:“公司今年不涨薪,明年看情况。”我笑了笑,心里却凉了半截。
回家路上,地铁13号线挤得像沙丁鱼罐头。我刷着脉脉,看到一条帖子:《React Native工程师,22k起,急招》。底下评论区炸了:“RN不是快死了吗?”“现在都搞Flutter了!”“这岗位怕不是外包吧?”
我点进去看了JD,要求不高:熟悉Javascript,有移动端经验优先。最关键的是——接受转岗。
当晚,我和老婆在厨房洗碗(对,我们家没洗碗机,省下的钱给娃报早教班了),我说:“我想学React Native,试试跳槽。”
她擦着盘子,头也不抬:“行啊,反正你晚上也没觉睡。”
这句话听着扎心,但现实就是这么骨感。在北京,一个35岁、有两个娃、住天通苑的程序员,不往前跑,就是往后退。
于是,我开始横向对比几个跨端方案:
Flutter:Dart语言,性能强,UI自绘,但学习曲线陡,社区中文资料少,而且……我真不想再学一门新语言了。Javascript我都还没完全搞明白呢。
uni-app:国内HBuilder系,写Vue就能出App,上手快。但生态封闭,打包体积大,而且一旦HBuilder政策变动,项目就可能被“绑架”。
原生Android/iOS:别闹了,我连Xcode都没装过,Kotlin和Swift?等我学会,大宝都上小学了。
区块链?哈!有朋友去年All in Web3,现在还在送外卖。虽然技术很酷,但落地场景少得可怜,公司招人也多是画饼。技术可以前沿,饭碗不能冒险。
最后选了React Native。原因很简单:
- 我会Javascript(至少自认为会);
- Facebook背书(虽然后来Meta重心转移,但社区还在);
- 大厂还在用——字节、美团、携程都有RN项目;
- 最关键:能用现有Web技能快速切入移动端。
二、第一个APP:从“Hello World”到“崩溃重启”
我给自己定的目标很朴素:两周内,做出一个能跑在手机上的APP。
工具链安装那天,我熬到凌晨两点。Node.js、npm、Xcode Command Line Tools、Android Studio……每装一个,Mac风扇就狂转一次。最崩溃的是Android模拟器,启动要3分钟,内存占8G,我这8G内存的老爷机差点蓝屏(哦不对,Mac没有蓝屏,是白苹果)。
终于,在某个周三晚上,我敲下了这段代码:
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
const App = () => {
return (
<View style={styles.container}>
<Text>我是天通苑奶爸,我在学RN!</Assistant>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#f0f0f0',
},
});
export default App;
npx react-native run-android —— 回车。
模拟器黑屏。
重试,报错:Metro Bundler can't listen on port 8081。
查Stack Overflow,发现是端口被占。杀进程、清缓存、重装node_modules……折腾到凌晨一点半,大宝突然哭醒。我赶紧冲进房间,抱起来拍背,嘴里还念叨着:“Metro……Metro……”
老婆在门口冷笑:“你管这叫学习?我看你是想把自己学进ICU。”
那一刻,我真的想放弃。
但第二天晚上,我又坐回了书桌前。成年人的坚持,往往不是因为热爱,而是因为别无选择。
终于,在第四天深夜,屏幕上出现了那行字:“我是天通苑奶爸,我在学RN!”
我截图发朋友圈,配文:“第一个RN App,献给熬夜的自己。”
没人点赞。只有老婆评论:“电费又超了。”
三、Javascript:我的老朋友,也是新敌人
很多人说RN就是“用Javascript写App”,听起来很简单。但当你深入之后,才发现Javascript的灵活性,恰恰是坑最多的地方。
比如状态管理。我一开始用useState,结果父子组件传值传得头晕。后来听说Redux太重,就试了Zustand,结果又遇到异步更新问题。最离谱的是,有一次我改了个变量名,整个App白屏,debug两小时才发现是拼写错误——Javascript不会报错,它只是默默返回undefined。
还有ES6的箭头函数、解构赋值、Promise……这些在学校里学过的东西,在真实项目里全变了味。尤其是在处理网络请求时,async/await和fetch混用,一不小心就内存泄漏。
有天晚上,我盯着一段代码发呆:
useEffect(() => {
const fetchData = async () => {
const res = await fetch('https://api.example.com/data');
const data = await res.json();
setData(data);
};
fetchData();
}, []);
老婆路过,瞥了一眼:“这不就是调个接口吗?怎么写了这么多行?”
我苦笑:“这已经是最简版了。要是加错误处理、loading状态、缓存逻辑……能写一页纸。”
Javascript看似简单,实则深不见底。而React Native,就是在这片深水区里划船。
四、区块链?别扯了,先让App跑起来
有次面试,HR问我:“你对区块链有了解吗?我们有个Web3项目在孵化。”
我心里咯噔一下。说实话,我去年跟风看过Solidity教程,还部署过一个ERC-20代币(在Ropsten测试网)。但我知道,那玩意儿离生产环境差十万八千里。
我老实回答:“了解概念,但没实战经验。不过我可以学。”
对方笑了笑:“我们更看重工程能力。RN项目急需人手。”
那一刻我明白了:在大多数公司眼里,区块链是PPT,React Native才是KPI。
技术圈总爱吹嘘“颠覆性创新”,但现实是——老板要的是能上线、能赚钱、能维护的产品。你跟他说去中心化,他问你DAU多少;你讲智能合约,他问你能不能明天修复那个闪退bug。
所以,别被风口带偏。先掌握能让你吃饭的技术,再去仰望星空。
五、从学习到求职:22k是怎么来的
坚持了一个月,我做出了三个小Demo:
- 一个天气查询App(用免费API)
- 一个Todo List(带本地存储)
- 一个仿抖音的视频流(用FlatList + react-native-video)
简历上写着:“熟悉React Native开发,掌握Javascript/ES6,了解移动端性能优化”。
投了20多家,面了8家,挂了5家。有家公司让我现场写一个列表下拉刷新,我手抖写错了keyExtractor,直接被pass。
但也有转机。一家做教育SaaS的公司看中了我的学习能力和项目完整性。终面时,CTO问我:“为什么选RN?”
我说:“因为我白天要带娃,晚上只能学Javascript。RN让我用现有技能切入移动端,性价比最高。”
他笑了:“真实。下周来试岗吧,月薪22k。”
回家路上,我给老婆发微信:“成了。”
她回:“房租交了吗?”
六、给同样处境的你:几点真心话
如果你也像我一样:
- 年龄30+,
- 有家庭负担,
- 技术栈老旧,
- 晚上才有时间学习,
那么我的建议是:
别追求“最新”,追求“最稳”。Flutter很酷,但RN生态更成熟,岗位更多。别为了技术洁癖耽误饭碗。
Javascript是你的杠杆。别小看它,它是前端世界的通用货币。把JS基础打牢,比盲目学框架更重要。
做能展示的项目。哪怕只是个Todo List,只要能跑在真机上,就比100篇教程有用。
接受“不完美学习”。你不可能把所有文档看完再动手。边做边学,错了就改,这才是成年人的学习方式。
别碰区块链当主业。除非你有矿或者能拿融资,否则它救不了你的房贷。
结语:深夜的光,照在代码上
现在,我每天晚上依然十点后才开电脑。大宝最近好些了,小宝也开始睡整觉。书桌上多了个保温杯,泡着枸杞菊花茶——程序员最后的倔强。
React Native不是银弹,但它给了我一个重新谈判薪资的筹码。在这个城市,尊严有时候不是喊出来的,是用一行行代码挣来的。
技术会过时,框架会淘汰,但解决问题的能力,永远稀缺。
所以,别问“RN还值得学吗?”
问自己:“我还有多少个深夜可以浪费?”
如果答案是“不多了”,那就现在,打开终端,敲下:
npx react-native init MyFirstApp
然后,等待Metro Bundler启动的那几分钟里,想想你的孩子、房租、和明天的早餐。
我们不是为了成为大神,只是为了在风暴中,稳稳地站在甲板上。
—— 一个住在天通苑、正在学React Native的奶爸,于2024年夏夜

评论 0