diff --git a/Day_1/README.md b/Day_1/README.md index c797eda..329d09f 100644 --- a/Day_1/README.md +++ b/Day_1/README.md @@ -1,6 +1,6 @@ # Day_1:环境配置与第一个 React Native 应用 -> 今天只做一件事:让 React Native 开发环境真正跑起来。 +> 今天只做一件事:让 React Native 开发环境跑起来。 预计用时:30~45 分钟。 diff --git a/Day_2/README.md b/Day_2/README.md index abac90a..2b88833 100644 --- a/Day_2/README.md +++ b/Day_2/README.md @@ -1,8 +1,7 @@ # Day_2:命令行基础——不用鼠标操作文件 -> 今天暂时不写界面,先掌握 React Native 项目同样离不开的命令行基础。 -> -> 我们来学习一个程序员每天都会接触的工具:**命令行(Command Line)**。 +> 今天暂时不写界面,先掌握任何项目都离不开的基础: +> **命令行(Command Line)**。 预计用时:30~45 分钟 @@ -21,9 +20,7 @@ - Windows 与 macOS 的命令行有什么区别 - 为什么很多开发命令必须在“正确的目录”中执行 -今天不要求背命令。 - -真正需要建立的是: +今天需要理解的是: > **“我现在在哪里?我要去哪里?我要操作哪个文件?”** @@ -40,9 +37,7 @@ 可以直接在 VS Code 中点击: ```text -终端 -→ -新建终端 +终端 → 新建终端 ``` 通常会打开: @@ -54,7 +49,24 @@ PowerShell 你可能看到: ```text -PS C:\Users\Arthur> +PS C:\Users\Arthur\...\your_project> +``` + +也可以使用 Windows 自带的: +```text +cmd 或 Powershell +``` + +通过: + +```text +Win + R +``` + +打开“运行”,然后搜索: + +```text +cmd 或 Powershell ``` --- @@ -64,9 +76,7 @@ PS C:\Users\Arthur> 同样可以直接使用 VS Code: ```text -Terminal -→ -New Terminal +终端 → 新建终端 ``` 通常会打开: @@ -101,9 +111,9 @@ Terminal --- -# 2. Windows 和 macOS 的命令一样吗? +# 终端命令 -有些一样,有些不一样。 +基于不同系统,Windows 和 macOS 的终端命令略有差异。 今天会使用的命令大部分在两个系统中都可以使用。 @@ -118,10 +128,6 @@ Terminal | 清屏 | `cls` / `clear` | `clear` | | 创建空文件 | `New-Item` | `touch` | -所以你会发现: - -> Windows PowerShell 和 macOS Terminal 的基本使用方式其实非常接近。 - 后面的教程如果没有特别说明: ```bash @@ -172,7 +178,7 @@ C:\Users\Arthur /Users/arthur ``` -虽然路径长得不一样,但表达的是同一个概念: +这行文字表达的概念是: > **你当前所在的位置。** @@ -342,7 +348,7 @@ Windows 和 macOS 都建议养成这个习惯: ```text CampusHelper app-rookie -my-project +my_project ``` 这种没有空格的名字。 @@ -421,17 +427,6 @@ Documents > 上一级目录。 -所以以后如果看到: - -```text -./ -../ -``` - -不要觉得它是什么特殊代码。 - -它们本质上只是在描述位置。 - --- # 9. 创建文件夹 @@ -526,11 +521,7 @@ projects notes ``` -到这里你已经在: - -> **完全不用鼠标** - -的情况下创建了三个文件夹。 +到这里: **完全不用鼠标** 的情况下,你已经创建了三个文件夹。 --- @@ -1282,33 +1273,3 @@ cd - --- -# 今天最重要的一句话 - -以后当你看到: - -```text -找不到文件 -找不到项目 -找不到配置 -not a git repository -``` - -不要第一时间慌。 - -先执行: - -```bash -pwd -``` - -然后: - -```bash -ls -``` - -问自己: - -> **我现在在哪里?我要操作的东西真的在这里吗?** - -这会解决很多未来的开发问题。 diff --git a/Day_3/README.md b/Day_3/README.md index e283a3d..4e23b71 100644 --- a/Day_3/README.md +++ b/Day_3/README.md @@ -2,7 +2,7 @@ > 今天学习 APP 开发中非常重要的工具:Git。 > -> 不管以后学习 React Native、Kotlin、KMP 还是后端,你都会继续使用它。 +> 不管以后学习 React Native、Kotlin、KMP 还是后端,你都会继续使用它。 预计用时:40~60 分钟 @@ -35,17 +35,7 @@ 这显然很痛苦。 -Git 可以帮你保存项目的修改历史。 - -你可以把: - -```text -commit -``` - -理解成: - -> 给当前代码拍一张快照。 +而 Git 可以帮你简洁优雅地保存项目的修改历史。 --- @@ -125,7 +115,7 @@ git config --global --list # 4. 创建自己的练习仓库 -进入社团 Git 平台。 +进入 GitHub。 创建一个自己的仓库,例如: @@ -342,7 +332,7 @@ git pull git pull ``` -观察本地文件有没有更新。 +观察本地文件的变化。 --- diff --git a/Day_4/README.md b/Day_4/README.md deleted file mode 100644 index c25471b..0000000 --- a/Day_4/README.md +++ /dev/null @@ -1,75 +0,0 @@ -# Day_4:第一个 React Native 页面——组件、JSX 与 StyleSheet - -> 今天不写复杂逻辑,只做出一个像样的页面。 - -预计用时:40~60 分钟。 - -## 今日目标 - -- 理解组件与 JSX -- 使用 `View`、`Text`、`Image` -- 使用 `StyleSheet` 编写样式 -- 完成 CampusHelper 的个人信息卡片 - -## 1. React Native 页面是什么 - -React Native 用组件描述页面: - -```text -View = 布局容器 -Text = 文字 -Image = 图片 -StyleSheet = 样式规则 -``` - -与 Web 不同,不能直接写 `div`、`p`;文字必须放在 `Text` 中。 - -## 2. 一个最小页面 - -在入口屏幕中尝试下面的代码: - -```tsx -import { StyleSheet, Text, View } from 'react-native'; - -export default function HomeScreen() { - return ( - - Hello APP - 这是我的第一个 React Native 页面。 - - ); -} - -const styles = StyleSheet.create({ - page: { flex: 1, padding: 24, backgroundColor: '#F5F7FB' }, - title: { fontSize: 28, fontWeight: '700', marginBottom: 12 }, -}); -``` - -`style={styles.title}` 表示把 `styles` 中名为 `title` 的样式应用到文字。 - -## 3. 制作个人信息卡片 - -在页面中加入以下结构,并替换成你自己的信息: - -```tsx - - 小明 - 计算机科学与技术 - 方向:移动端开发 - -``` - -为 `card` 添加 `padding`、`backgroundColor`、`borderRadius` 和 `marginTop`;为 `name` 设置更大的 `fontSize` 和 `fontWeight: '700'`。 - -## 今日任务 - -完成一张个人信息卡片,至少展示:姓名、专业、感兴趣的方向、想学习的技术。自行调整背景、间距、字号或圆角,使页面有自己的风格。 - -## 验收标准 - -- [ ] 使用了 `View` 和 `Text` -- [ ] 使用 `StyleSheet.create` -- [ ] 页面显示四项个人信息 -- [ ] 卡片具有间距、背景色和圆角 -- [ ] 在 Expo Go 或模拟器中正常预览 diff --git a/Day_5/README.md b/Day_5/README.md deleted file mode 100644 index c0b3f53..0000000 --- a/Day_5/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# Day_5:让页面动起来——事件、state 与 useState - -预计用时:40~60 分钟。 - -## 今日目标 - -- 理解“事件 → 函数 → state 更新 → 界面更新” -- 使用 `Pressable` -- 使用 `useState` -- 完成学习打卡计数器 - -## 1. state 是什么 - -页面中会变化的数据叫状态(state)。在函数组件中,用 `useState` 保存它: - -```tsx -import { useState } from 'react'; - -const [count, setCount] = useState(0); -``` - -`count` 是当前数值;`setCount` 是更新它的方式。调用后,React 会重新渲染受影响的界面。 - -## 2. 加一个按钮 - -```tsx -import { Pressable, Text, View } from 'react-native'; - - - 今日学习次数:{count} - setCount(count + 1)}> - +1 - - -``` - -用户点击 `Pressable`,触发 `onPress`,再通过 `setCount` 更新数值;`Text` 中的 `{count}` 会显示新值。 - -## 今日任务:学习打卡计数器 - -在昨天的个人信息卡片下方加入计数器: - -```text -今日学习打卡 -当前完成:0 次 -[ +1 ] [ -1 ] [ 重置 ] -``` - -要求:`+1` 增加一次;`-1` 减少一次但不能小于 0;重置按钮使次数回到 0;为按钮添加明显的背景色、内边距和圆角。 - -`-1` 的逻辑可以写成: - -```tsx -setCount((current) => Math.max(0, current - 1)); -``` - -## 验收标准 - -- [ ] 使用 `useState` -- [ ] 使用至少一个 `Pressable` -- [ ] `+1`、`-1`、重置均可用 -- [ ] 数值不会小于 0 -- [ ] 点击后界面会立即更新 - -## 思考题 - -为什么不要写 `count++`,而要调用 `setCount`?提示:React 需要知道状态发生了变化,才能安排重新渲染。 diff --git a/Day_6/README.md b/Day_6/README.md deleted file mode 100644 index 5907786..0000000 --- a/Day_6/README.md +++ /dev/null @@ -1,92 +0,0 @@ -# Day_6:列表与导航——从一个页面到一个小应用 - -> 今天第一次制作“列表页 → 详情页”。 - -预计用时:45~60 分钟。 - -## 今日目标 - -- 使用数组保存列表数据 -- 用 `FlatList` 高效渲染列表 -- 使用 Expo Router 的 `Link` 或 `router.push` 跳转 -- 在详情页读取路由参数 - -## 1. 准备活动数据 - -在首页定义数据: - -```tsx -const activities = [ - { id: '1', title: 'APP 部新人培训', time: '周五 19:00', place: '信息学院' }, - { id: '2', title: '程序设计比赛', time: '周六 14:00', place: '教学楼' }, - { id: '3', title: '社团招新宣讲', time: '周日 18:30', place: '大学生活动中心' }, -]; -``` - -每一项都是对象,`id` 用来识别活动,其他字段是要显示的信息。 - -## 2. 使用 FlatList - -`FlatList` 是 React Native 推荐的长列表组件。最小写法如下: - -```tsx -import { FlatList, Text, View } from 'react-native'; - - item.id} - renderItem={({ item }) => ( - - {item.title} - {item.time} · {item.place} - - )} -/> -``` - -## 3. 创建详情页 - -Expo Router 模板中,为活动详情新建 `app/activity/[id].tsx`。`[id]` 表示 URL 中可变的参数,例如 `/activity/2`。 - -首页可用 `router.push` 前往详情: - -```tsx -import { router } from 'expo-router'; - -router.push({ pathname: '/activity/[id]', params: { id: item.id } }); -``` - -详情页通过 `useLocalSearchParams` 读取参数: - -```tsx -import { useLocalSearchParams } from 'expo-router'; - -const { id } = useLocalSearchParams<{ id: string }>(); -``` - -根据 `id` 从活动数组中查找对应数据,再展示标题、时间、地点与介绍。页面返回按钮由 Expo Router 的 Stack 默认提供;若没有,请检查根布局是否使用了 `Stack`。 - -## 今日任务:校园活动列表 - -完成首页活动列表和活动详情页: - -```text -首页 - ├─ APP 部新人培训 - ├─ 程序设计比赛 - └─ 社团招新宣讲 - ↓ - 活动详情 -``` - -详情页至少显示活动名称、时间、地点、活动介绍。点击不同活动,必须显示不同内容。 - -## 验收标准 - -- [ ] 首页至少显示 3 条活动 -- [ ] 使用 `FlatList` -- [ ] 每个列表项都有稳定的 `id` -- [ ] 点击列表项能跳到详情页 -- [ ] 使用 `router.push`(或 `Link`)传递 `id` -- [ ] 详情页用 `useLocalSearchParams` 读取 `id` -- [ ] 不同活动展示不同详情 diff --git a/Day_7/README.md b/Day_7/README.md deleted file mode 100644 index 72be53f..0000000 --- a/Day_7/README.md +++ /dev/null @@ -1,100 +0,0 @@ -# Day_7:综合小测——CampusHelper - -> 把前六天学到的东西真正组合成一个 React Native 应用。 - -预计用时:60~90 分钟。 - -今天可以查阅前面的 README、官方文档、报错信息或 AI;但请确保你知道提交的代码大致在做什么。 - -## 最终任务 - -完成 CampusHelper,至少包含: - -```text -首页 - ├─ 个人信息卡片 - ├─ 学习打卡计数器 - └─ 校园活动列表 - ↓ - 活动详情 - └─ 报名状态切换 -``` - -## 功能要求 - -### 1. 个人信息卡片 - -首页显示姓名、专业、APP 部新人身份和学习方向。 - -### 2. 学习打卡 - -显示当前次数,提供 `+1`、`-1`、重置按钮;次数不能小于 0。 - -### 3. 活动列表 - -至少三条活动,每条展示名称、时间和地点。请使用 `FlatList`。 - -### 4. 活动详情 - -点击活动进入详情页,展示标题、时间、地点和介绍。不同活动必须显示不同内容。 - -### 5. 报名按钮 - -详情页增加可切换状态的按钮: - -```text -[ 报名活动 ] ↔ [ 已报名 ] -``` - -参考实现: - -```tsx -const [joined, setJoined] = useState(false); - - setJoined((current) => !current)}> - {joined ? '已报名' : '报名活动'} - -``` - -## 最低验收标准 - -- [ ] 项目能通过 `npx expo start` 正常运行 -- [ ] 至少有首页和活动详情页两个页面 -- [ ] 使用 `View`、`Text`、`StyleSheet` -- [ ] 使用 `useState` -- [ ] 使用 `Pressable` 和 `onPress` -- [ ] 使用 `FlatList` -- [ ] 使用 Expo Router 页面跳转并传递参数 -- [ ] 有一个能改变状态的报名按钮 -- [ ] 页面有基本样式且没有明显红色报错 - -## Git 要求 - -完成项目后,在项目目录执行: - -```bash -git status -git add . -git commit -m "feat: finish CampusHelper React Native app" -git push -git log --oneline -``` - -## 项目 README - -为你的项目添加 `README.md`,写明:项目名称、已完成功能、你学到的 React Native 知识点,以及启动方式: - -```bash -npm install -npx expo start -``` - -## 提交内容 - -在 Day_7 工单提交首页截图、活动详情截图、Git 提交记录截图,以及一句你在这七天中收获最大或最难理解的知识点。 - -## Bonus - -- 用 `AsyncStorage` 持久化报名状态; -- 设计自己的色彩、卡片和按钮风格; -- 增加 Todo、课程表、失物招领等一个新页面。 diff --git a/README.md b/README.md index 590f6c7..749160b 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ APP 部 2026 纳新每日一题(开发基础 / 命令行 / Git / React Native | `Day_6` | 列表与导航:`FlatList`、参数与详情页 | | `Day_7` | 综合完成一个 React Native 校园助手应用 | -> **定位目标:**帮助零基础同学建立开发习惯,理解项目、组件、状态、事件、列表与导航,并能阅读和修改一个简单的 React Native 应用。 +> **目的:**帮助零基础同学建立开发习惯,理解项目、组件、状态、事件、列表与导航,并能阅读和修改一个简单的 React Native 应用。 ## 技术栈 @@ -27,7 +27,7 @@ APP 部 2026 纳新每日一题(开发基础 / 命令行 / Git / React Native - Expo:提供适合入门的项目脚手架、开发服务器与真机预览流程。 - React Navigation:处理多页面应用的页面跳转。 -入门阶段不需要 Android Studio 或 Xcode;使用 Expo Go 扫码即可在手机上预览。 +不需要 Android Studio、Xcode 或微信开发者工具;使用 Expo Go 扫码即可在手机上预览。 ## 最终项目:CampusHelper