前言:根据blibli视频教学,使用React Native最新版本0.70.6,一步步学习、整理和记录,使用编辑器是VS Code,可以网上搜索一下前端需要的插件进行安装,也需要配置一下自定义代码段,新建空白页面和注释的时候,可以使用自定义代码段。博主的普通话不是很好,稍微忍受一下,视频网址https://www.bilibili.com/video/BV1e5411L7VV/?vd_source=ad2c8fddcc94d6b77f1179fe0b5aae26

一、环境配置

参考https://reactnative.dev/docs/environment-setup

注意事项:

  1. 网络最好可以翻墙,如果不行的话,设置国内镜像,推荐使用Mac电脑。
  2. 按照教程一步步来,一步成功后,再进行下一步,出现错误,网络上进行搜索,推荐谷歌搜索。
  3. 一定要耐心,一次配置好环境的概率比较小,多尝试几次。

二、新建项目

参考https://reactnative.dev/docs/environment-setup

命令行输入

npx react-native init AwesomeProject

其中,AwesomeProject是项目名称,推荐英文,项目的目录结构会在接下来一步步进行完善。

由于React Native版本更新频繁,新建的项目版本信息如下:

三、设置字体

这步可以直接略过,跟我个人习惯有关,我喜欢好看一点的字体,不然会看着不舒服,所以先引入自定义字体--苹方,React Native默认使用手机系统字体,以下为了演示方便,字体直接下载下来是中文名称,自己重命名为英文。

1、android设置

项目名/android/app/src/main/assets/fonts(如果没有fonts文件夹的话就自己建一个),然后将下载好的字体放到fonts目录下即可

2、IOS设置

新建目录/src/main/assets/fonts,然后将下载好的字体放到fonts目录下

用Xcode打开项目,然后新建fonts文件

选择/src/assents/fonts文件夹,然后资源会出现在Build Phases-->Copy Bundle Resources中

最后,在info.plist中配置

3、最后就可以在项目中使用了

  fontFamily: 'PingFangSC-Medium'

4、新建目录/src/constant/,然后新建Styles.js 文件,常用的样式可以写在这里,便于每次引用

尤其注意:fontWeight:'500'中,500是字符串,如果直接写数字,可能会造成app闪退。

四、配置路由React-Navigation

参考https://reactnavigation.org/docs/getting-started

1、安装依赖

本人使用的是npm,你也可以使用yarn,官方参考文档一定要看到Hello React Navigation这一步,不然依赖会装不全

npm install -S @react-navigation/native react-native-screens react-native-safe-area-context @react-navigation/native-stack

2、参考官方教程

在根入口文件App.js中,添加如下代码

// In App.js in a new projectimport * as React from 'react';
import {View, Text, Button} from 'react-native';
import {NavigationContainer} from '@react-navigation/native';
import {createNativeStackNavigator} from '@react-navigation/native-stack';
import {styles} from './src/constant/Styles';function HomeScreen({navigation}) {return (<View style={styles.CenterContainer}><Text style={styles.Title}>Home Screen</Text><Buttontitle="Go to Details"onPress={() => navigation.navigate('Details')}/></View>);
}function DetailsScreen() {return (<View style={styles.CenterContainer}><Text style={styles.Title}>Details Screen</Text></View>);
}const Stack = createNativeStackNavigator();function App() {return (<NavigationContainer><Stack.Navigator initialRouteName="Home"><Stack.Screen name="Home" component={HomeScreen} /><Stack.Screen name="Details" component={DetailsScreen} /></Stack.Navigator></NavigationContainer>);
}export default App;

然后在手机上运行如下:

3、根据视频教程,新加一个登录页面,新建以下目录/src/pages/account/login,新建index.js页面,代码如下:

import React, {Component} from 'react';
import {View, Text} from 'react-native';
import {styles} from '../../../constant/Styles';class Index extends Component {render() {<View style={styles.CenterContainer}><Text style={styles.Title}>Login</Text></View>;}
}export default Index;

然后在App.js中添加登录页面

运行效果如下

按照教程一步步来,结果登录页面是空白,仔细比对了一下,发现登录页面是用class写的,其他页面都是函数写的,于是将登陆页改成函数形式。

import React, {Component} from 'react';
import {View, Text} from 'react-native';
import {styles} from '../../../constant/Styles';const Index = () => {return (<View style={styles.CenterContainer}><Text style={styles.Title}>Login</Text></View>);
};export default Index;

手机运行效果如下

4、为方便路由管理,将路由设置整理在一个文件里。在src文件下新建一个Nav.js文件,代码如下

// In App.js in a new projectimport React from 'react';
import {View, Text, Button} from 'react-native';
import {NavigationContainer} from '@react-navigation/native';
import {createNativeStackNavigator} from '@react-navigation/native-stack';
import {styles} from './constant/Styles';
import Login from './pages/account/login';function HomeScreen({navigation}) {return (<View style={styles.CenterContainer}><Text style={styles.Title}>Home Screen</Text><Buttontitle="Go to Details"onPress={() => navigation.navigate('Details')}/></View>);
}function DetailsScreen() {return (<View style={styles.CenterContainer}><Text style={styles.Title}>Details Screen</Text></View>);
}const Stack = createNativeStackNavigator();function Nav() {return (<NavigationContainer><Stack.Navigator initialRouteName="Login"><Stack.Screen name="Login" component={Login} /><Stack.Screen name="Home" component={HomeScreen} /><Stack.Screen name="Details" component={DetailsScreen} /></Stack.Navigator></NavigationContainer>);
}export default Nav;

然后,在App.js引入以上文件即可,代码如下

// In App.js in a new projectimport * as React from 'react';
import {View} from 'react-native';
import Nav from './src/nav';
import {styles} from './src/constant/Styles';function App() {return (<View style={styles.Container}><Nav></Nav></View>);
}export default App;

注意:view必须设置样式flex:1才可以正常显示,否则页面全部空白,不显示。

如果需要不显示导航头,则需要加上如下属性options={{headerShown: false}}

 <Stack.Screenname="Login"options={{headerShown: false}}component={Login}/>

手机运行如下

​​​​​​​

React-Native + Mobx项目实战--探花交友APP--项目搭建相关推荐

  1. React Native+Node.js 开发的课程表app项目笔记

    在做项目之前,首先要把React Native 的环境搭建好,这里我就不多做阐述,RN中文网步骤说的挺清楚的,就跟着配置就好. http://reactnative.cn/docs/0.... 一.总 ...

  2. React项目实战之租房app项目(四)长列表性能优化城市选择模块渲染列表

    前言 目录 前言 一.长列表性能优化 1.1 概述 1.2 懒渲染 1.3 可视区渲染(React-virtualized) 二.react-virtualized组件 2.1 概述 2.2 基本使用 ...

  3. React项目实战之租房app项目(二)首页模块

    前言 目录 前言 一.首页路由处理 二.轮播图 2.1 轮播图效果图 2.2 拷贝轮播图组件代码 2.3 轮播图代码详解 2.4 轮播图代码重构 2.5 解决轮播图出现的BUG 三.导航菜单 3.1 ...

  4. React项目实战之租房app项目(十)个人中心模块登录访问控制项目打包部署上线

    前言 目录 前言 一.个人中心模块 1.1 个人中心模块效果图 1.2 个人中心模块基础布局 1.2 个人中心模块功能实现 1.2.1 判断用户是否登陆 1.2.2 退出功能 二.登录访问控制 2.1 ...

  5. SpringBoot交友APP项目实战(详细介绍+案例源码) - 7.即时通讯(基于第三方API)

    陌上花开,可缓缓归矣 系列文章目录 1. 项目介绍及环境配置 2. 短信验证码登录 3. 用户信息 4. MongoDB 5. 推荐好友列表/MongoDB集群/动态发布与查看 6. 圈子动态/圈子互 ...

  6. React Native移动开发实战-4-Android平台的适配

    打开Android开发工具Android Studio,选择菜单 Open an existing AndroidStudio project,打开ch04项目的android文件夹,如图5.8所示. ...

  7. 黑马探花交友----1.项目搭建-注册登录-完善个人信息

    学习目标: 项目的功能介绍 工程搭建 短信验证码 阿里云OSS服务应用 人脸识别 完善个人信息 1.社交介绍 1.1.项目背景 在线社交是互联网时代的产物,已成为互联网用户的基础需求之一.移动互联网自 ...

  8. Android项目实战:账本APP开发

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 Java项目实战:账本APP服务 ...

  9. 【Android项目实战 | 从零开始写app(十二)】实现app首页智慧服务热门推荐热门主题、新闻

    说在前面,由于各种adapter,xml布局,bean实体类,Activity,也为了让看懂,代码基本都是"简单粗暴直接不好看",没啥okhttp和util工具类之类的封装,本篇幅 ...

最新文章

  1. perf + 火焰图分析程序性能
  2. 高金吉院士:让机器“自愈化”引领新科技变革
  3. 使用ansible批量部署开机启动时为字符界面
  4. Eclipse上搭建SSH(struts-2.2.3 + spring-2.5.6 + hibernate-3.6.8)框架-附源码
  5. ajax 最大链接数_leetcode之第三大的数
  6. Asp.NetCore-部署到IIS
  7. python发邮件11002_【python发送zabbix报警邮件,SSL版本】mailman.py
  8. 《c语言从入门到精通》看书笔记——第14章 文件
  9. HALCON示例程序texture.hdev检测树木
  10. debian下安装repo
  11. 收藏 | 人工智能与模式识别会议集锦
  12. python指定时间范围数据_Python提取特定时间段内数据的方法实例
  13. C++ 引用计数技术及智能指针的简单实现
  14. 软件测试工程师的工作总结
  15. 数学建模之案例学习1——企业营销额问题
  16. python多条件选股_通达信几种实用的条件选股公式,一旦掌握,至少翻翻!
  17. docker-compose开机自启动设置
  18. IIR滤波器设计之冲激响应不变法与双线性变换法
  19. Java设计一个测桃花模块_20145209刘一阳《JAVA程序设计》第十五周补充测试
  20. [4G5G基础学习]:流程 - 4G LTE PLMN选择、扫频、小区搜索、系统消息读取、小区选择过程

热门文章

  1. 钉钉开放平台-小程序开发实战(钉钉小程序服务器端)
  2. MongoDB年终大会转移至线上进行 | 周五参会指南
  3. linux中w命令使用
  4. 2019南京区块链论坛小结
  5. BT05蓝牙模块使用教程
  6. a标签与link标签的区别
  7. EO.WebBrowser使用
  8. JavaWeb问题记录——IDEA换了图片前端不更新。
  9. U盘中SLC、MLC和TLC三者闪存类型的优缺点及区别
  10. iOS雷达图 iOS RadarChart实现