创建react native项目的笔记
创建react native项目的笔记
- 重新下载 ruby
- 安装 watchman
- 安装 cocoapods
- 安装 react native 项目
- 创建好项目后安装 ios 依赖
- 清除设备缓存
- 安装 android 依赖
- 链接 网易 mumu 模拟器
- 安装路由 Navigation
- 页面之间的跳转逻辑
- 自定义头部样式
- 判断不同设备平台代码示例
- 安装 Axios
- 安装本地简单存储工具
- 安装轮播图
- 安装 Toast 消息弹出框
- 公共信息确认框
- 安装线性渐变色
- 安装富文本解析器
- 安装下拉选择插件
- 安装上传图片插件
- 类似于小程序 onShow 生命周期
重新下载 ruby
1.ruby环境必须是2.6.10版本以上(查看ruby版本 ruby -v)brew reinstall ruby2.进入vim编辑器
vim ~/.zshrc3.配置
export PATH="/usr/local/opt/ruby/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/ruby/lib"
export CPPFLAGS="-I/usr/local/opt/ruby/include"
export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig"4.重新执行一下文件
source ~/.zshrc
安装 watchman
brew install watchman
安装 cocoapods
sudo gem install cocoapods
pod setup
安装 react native 项目
npx react-native@latest init <项目名称>npx react-native run-ios
npx react-native run-android
创建好项目后安装 ios 依赖
1.第一步
进入ios文件夹
cd ios2.第二步
bundle install3.第三步
bundle exec pod install运行项目打包ios
清除设备缓存
1.android
npx react-native start --reset-cache2.ios
npx react-native start --reset-cache --reset-cache
安装 android 依赖
cd android
./gradlew clean
cd ..
npx react-native run-android
链接 网易 mumu 模拟器
1.windows
adb connect 127.0.0.1:75552.mac
adb connect 127.0.0.1:5555
安装路由 Navigation
1.第一步
npm install @react-navigation/native2.第二步
npm install react-native-screens react-native-safe-area-contextreact-native-safe-area-context:提供了处理安全区域(Safe Area)的能力。安全区域是指屏幕上不受刘海屏、圆角等系统元素遮挡的区域在App.jsx文件中引入
(NavigationContainer是一个组件,用于管理我们的导航树并包含导航状态。
这个组件必须包裹所有的导航器结构。通常,我们会在应用程序的根部渲染这个组件,这通常是从App.js导出的组件)
import {NavigationContainer} from '@react-navigation/native';
import {SafeAreaProvider} from 'react-native-safe-area-context';安装的库是导航器的构建块和共享基础3.第三步
npm install @react-navigation/native-stack@react-navigation/native-stack依赖于react-native-screens和上面安装的其他库在App.jsx文件中引入
import { createNativeStackNavigator } from '@react-navigation/native-stack';4.安装底部tab切换
npm install @react-navigation/bottom-tabsTab.Navigator组件的screenOptions属性用于设置所有Tab.Screen组件的默认选项和样式。下面是一些常用的样式选项:
- tabBarStyle:设置标签栏的样式,可以包括backgroundColor、height、borderTopWidth等。
- tabBarActiveTintColor:设置活动标签的文本颜色。
- tabBarInactiveTintColor:设置非活动标签的文本颜色。
- tabBarLabelStyle:设置标签的文本样式,可以包括fontFamily、fontSize、fontWeight等。
- tabBarIconStyle:设置标签图标的样式,可以包括width、height、tintColor等。
- tabBarIndicatorStyle:设置标签栏指示器的样式,可以包括backgroundColor、height等。
- tabBarPressColor:设置标签栏被按下时的颜色。
- tabBarPressOpacity:设置标签栏被按下时的不透明度。Tab.Screen组件的options属性用于设置选项,可以通过它来自定义标签页的外观和行为。下面是一些常用的设置项:
- tabBarLabel:标签页的显示文本。
- tabBarIcon:标签页的图标,可以使用图标组件或自定义图标。
- tabBarVisible:设置标签页是否可见。
- tabBarAccessibilityLabel:设置标签页的辅助功能标签。
- tabBarTestID:设置标签页的测试ID,用于测试目的。
- tabBarBadge:设置标签页的徽章,显示在图标上,并可以用于显示未读消息数等。
- tabBarBadgeStyle:设置标签页徽章的样式。
- tabBarButtonComponent:自定义标签页的按钮组件。
- tabBarOnPress:点击标签页时触发的回调函数。
页面之间的跳转逻辑
navigation.popToTop();//返回顶部页面navigation.goBack(2,{}); // 返回到第二个页面navigation.navigate('Fourth',{});//跳转到对应页面import {useNavigation} from '@react-navigation/native';
const navigation = useNavigation();
navigation.navigate('List');import { useRoute } from '@react-navigation/native';
const route = useRoute();
route.params
添加
npm install react-native-gesture-handler
自定义头部样式
1.headerStyle:一个应用于包裹标题的View的样式对象。如果在上面设置了backgroundColor,那么标题的颜色将为该颜色- backgroundColor:标题栏的背景颜色。
- borderBottomColor:标题栏底部边框的颜色。
- borderBottomWidth:标题栏底部边框的宽度。
- height:标题栏的高度。2.headerTintColor:
返回按钮和标题都使用此属性作为它们的颜色。在下面的示例中,我们将tintColor设置为白色(#fff),以使返回按钮和标题为白色。- 颜色名称:您可以使用预定义的颜色名称,如"red"、"blue"、"green"等。
- 十六进制值:您可以使用十六进制颜色代码,如"#FF0000"代表红色。
- RGB值:您可以使用RGB值来指定颜色,如"rgb(255, 0, 0)"代表红色。3.headerTitleStyle属性用于自定义标题的样式,可以设置以下样式属性:- fontFamily:标题的字体族名称(如"Arial"、"Helvetica"等)。
- fontWeight:标题的字重(如"bold"、"normal"等)。
- fontSize:标题的字号大小。
- color:标题的颜色。
- textAlign:标题的对齐方式(如"left"、"center"、"right"等)。
- textTransform:标题的文本转换方式(如"uppercase"、"lowercase"等)。
- letterSpacing:标题的字间距。
- lineHeight:标题的行高。
判断不同设备平台代码示例
const refreshControl = Platform.select({ios: <RefreshControlIOSrefreshing={refreshing}onRefresh={handleRefresh}/>,android: <RefreshControlrefreshing={refreshing}onRefresh={handleRefresh}/>
});
安装 Axios
npm install axios
安装本地简单存储工具
1.第一步
npm install @react-native-async-storage/async-storage2.第二步
导入库并使用AsyncStorage
import AsyncStorage from "@react-native-async-storage/async-storage";// token模块
const TokenKey = 'windoentToken';
//存储数据
export const setToken = async value => {await AsyncStorage.setItem(TokenKey, value);
};//获取数据
export const getToken = async () => {try {const value = await AsyncStorage.getItem(TokenKey);return value;} catch (error) {return null;}
};//删除数据
export const removeToken = async () => {await AsyncStorage.removeItem(TokenKey);
};
安装轮播图
npm install react-native-swiper
安装 Toast 消息弹出框
1.安装
npm install --save react-native-toast-message2.在App.jsx中注册全局
// App.jsx
import Toast from 'react-native-toast-message';export function App(props) {return (<>{/* ... */}<Toast /></>);
}3.组件中使用
import Toast from 'react-native-toast-message';
Toast.show({type: 'success',//`success`、`error`、`info`text1: 'Hello',text2: 'This is some something 👋'
});
公共信息确认框
1.在组件中引入
import ShowModal from '../../componets/ShowModel';2.在组件中注册
<ShowModal ref={showModelRef} />const showModelRef = useRef(null);const showMOdel = () => {showModelRef.current.show({title: '标题',content: '内容-加油',success: res => {console.log('[返回值-12]', res);},});};
安装线性渐变色
1.安装
npm install react-native-linear-gradient2.使用
import LinearGradient from 'react-native-linear-gradient';
<LinearGradientcolors={['#FFAA6B', '#FF5B23']}start={{ x: 0, y: 0 }}end={{ x: 1, y: 0 }}style={{ flex: 1 }}><View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}><Text style={{ color: 'white', fontSize: 24 }}>Hello, this is a gradient background!</Text></View>
</LinearGradient>
安装富文本解析器
1.安装
npm install react-native-htmlview --save2.使用
import HTMLView from 'react-native-htmlview';
render() {const htmlContent = `<p><a href="http://jsdf.co">♥ nice job!</a></p>`;return (<HTMLViewvalue={htmlContent}stylesheet={styles}/>);}const styles = StyleSheet.create({a: {fontWeight: '300',color: '#FF3366', // make links coloured pink},
});
安装下拉选择插件
React Native >= 0.60+
https://www.npmjs.com/package/react-native-wheel-pick
1.安装
npm install react-native-wheel-pick --save-dev --legacy-peer-deps
npm install @react-native-picker/picker --save-dev --legacy-peer-deps
npm install @react-native-community/datetimepicker --save-dev --legacy-peer-deps2.安装日期
https://www.npmjs.com/package/react-native-date-picker?activeTab=readme
npm install react-native-date-picker --save
安装上传图片插件
https://github.com/react-native-image-picker/react-native-image-picker
1.安装
npm install react-native-image-picker -S2.使用
import {launchCamera, launchImageLibrary} from 'react-native-image-picker';//点击上传图片const uploadHandle = async () => {const options = {mediaType: 'photo', //photo or video or mixed(launchCamera on Android does not support 'mixed').quality: 0.5,selectionLimit: 1,};const response = await launchImageLibrary(options);console.log('[]', response);if (response.didCancel) {console.log('User cancelled image picker');} else if (response.error) {console.log('ImagePicker Error: ', response.error);} else if (response.customButton) {console.log('User tapped custom button: ', response.customButton);} else {// Get image sourceconst files = response.assets;const source = {type: files[0].type,uri: files[0].uri,name: files[0].fileName,fileSize: files[0].fileSize,};// Set image sourceconsole.log('[上传图片]', source);}};
类似于小程序 onShow 生命周期
import {useFocusEffect} from '@react-navigation/native';
const [appStatus, setAppStatus] = useState(true);
useEffect(() => {console.log('[页面状态]', appStatus);if (appStatus) {getInitList();}return () => {// 在组件销毁时触发};}, [appStatus]);useFocusEffect(() => {setAppStatus(true);return () => {setAppStatus(false);};});
相关文章:
创建react native项目的笔记
创建react native项目的笔记 重新下载 ruby安装 watchman安装 cocoapods安装 react native 项目创建好项目后安装 ios 依赖清除设备缓存安装 android 依赖链接 网易 mumu 模拟器安装路由 Navigation页面之间的跳转逻辑自定义头部样式判断不同设备平台代码示例安装 Axios安装本地…...
Java自动化测试之Chrome网页爬取
记录一个好玩的小插件,可以通过它获取网页上的某个元素,然后得到他的值,不过需要懂前端技术,同时还需要一个chrome的小工具,工具放在我的共享文件里了,叫 chromedriver插件 pom 依赖 <dependency>&…...
boost下的asio异步高并发tcp服务器搭建
C 网络编程 asio 使用总结 - 知乎 (zhihu.com) 基于Boost::asio的多线程异步TCP服务器,实现了io_service线程池,测试了1万左右的并发访问,读写无压力_boost asio支持最大并发_E404的博客-CSDN博客 单线程 server.cpp #include <cstdlib&g…...
HCIP第五节------------------------------------------ospf
一、OSPF基础 1、动态路由分类 2、距离矢量协议 运行距离矢量路由协议的路由器周期性地泛洪自己的路由表。通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中,然后再通告给其他相邻路由器。 对于网络中的所有…...
Golang下载安装
目录 1. 下载压缩包 2. 解压 3. 查看SDK是否安装成功 4. 配置环境变量 5. 查看环境变量是否配置成功 1. 下载压缩包 官网下载地址: All releases - The Go Programming Language Windows64位选择如下下载: 2. 解压 解压后内容如下: …...
工作时使用redis,kafka查阅的资料链接
不分先后 一 、redis查阅地址 一篇文章讲清楚RedisRedis原理介绍一篇详文带你入门 Redis内存耗尽后Redis会发生什么Redis 深入了解键的过期时间redis持久化机制Redis延迟问题全面排障指南一文搞定Redis高级特性与性能调优Redis 在 Linux 系统的配置优化Redis 的延迟问题&…...
上传excel文件
文件上传,其实就是用el-upload组件来实现上传,只是换了样式,和图片上传一样 <el-form-item label"选择文件"><el-input placeholder"请选择文件" v-model"form.file" disabled style"width: 45…...
leetcode 力扣刷题哈希表初尝试
哈希表 刷题初尝试 哈希表基础知识242. 有效的字母异位词383. 赎金信49. 字母异位词分组438. 找到字符串中所有字母异位词 哈希表基础知识 哈希表是一种数据结构,也叫散列表。哈希表中存储的是键值对,即(key,value),根据key直接查…...
Docker 本地镜像发布到私有仓库
1. 本地镜像发布到私有库流程 2. 是什么 1 官方Docker Hub地址:https://hub.docker.com/,中国大陆访问太慢了且准备被阿里云取代的趋势,不太主流。 2 Dockerhub、阿里云这样的公共镜像仓库可能不太方便,涉及机密的公司不可能提供镜…...
计算机网络和 Internet 的基本概念
计算机网络和互联网(Internet)是现代计算机科技中的重要概念。它们为计算机之间的通信和数据交换提供了基础架构。以下是它们的基本概念: **计算机网络:** 计算机网络是指将多台计算机连接在一起,以便它们可以共享资…...
高并发数据抓取实战:使用HTTP爬虫ip提升抓取速度
又到每天一期学习爬虫的时间了,作为一名专业的爬虫程序员,今天要跟你们分享一个超实用的技巧,就是利用HTTP爬虫ip来提升高并发数据抓取的速度。听起来有点高大上?别担心,我会用通俗易懂的话来和你们说,让你…...
CSS3 中新增了哪些常见的特性?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 圆角(Border Radius)⭐ 渐变(Gradients)⭐ 阴影(Box Shadow)⭐ 文本阴影(Text Shadow)⭐ 透明度(Opacity)⭐ 过渡&…...
简单认识excel篇章1
excel是Office办公软件中的组件之一,它专长于对表格中的数据进行计算和统计管理,通常用于财务或其他数据管理的表格制作,同时excel还有很好的可视化能力,可用于制作各种行业报告。 在Microsoft Excel中,excel文件的后缀…...
CentOS系统环境搭建(九)——centos系统下使用docker部署项目
centos系统环境搭建专栏🔗点击跳转 关于Docker-compose安装请看CentOS系统环境搭建(三)——Centos7安装Docker&Docker Compose,该文章同样收录于centos系统环境搭建专栏。 Centos7部署项目 采用前后端分离的形式部署。使用Do…...
【科研论文配图绘制】task1 掌握科研绘图的基本知识
【科研论文配图绘制】task1 掌握科研绘图的基本知识 写在最前 8月份Datawhale组队学习,写下该博客记录学习内容 1.科研论文配图的分类与构成 2.科研论文配图的格式和尺寸 3.科研论文配图中的字体和字号设置 4.科研论文配图的版式设计、结构布局和颜色搭配 占个…...
YAML资源清单
目录 YAML资源清单 (一)YAML 语言 (1)基本语法 (2)支持的数据结构 (二)通过资源清单管理容器资源 YAML 语法格式: 创建Service资源清单 (三ÿ…...
数据分析两件套ClickHouse+Metabase(二)
Metabase篇 Metabase安装部署 任何问题请查看 -> 官方文档 jar包从GitHub下载 -> 地址 同样有个问题, 默认数据源里没有ClickHouse, 不过ClickHouse官方提供了插件包 -> 插件包 在安装metabase目录下新建一个plugins文件夹, 把下载的clickhouse.metabase-driver.ja…...
神经网络基础-神经网络补充概念-20-激活函数
概念 激活函数是神经网络中的一个重要组成部分,它引入了非线性性质,使得神经网络可以学习和表示更复杂的函数关系。激活函数对于将输入信号转换为输出信号起到了关键作用,它在神经元的计算过程中引入了非线性变换。 几种常见的激活函数及其…...
欧拉函数和最大公约数
分析:如果两个数的最大公约数是一个质数p,那么这两个数都除以p,得到的两个数的最大公约数一定是1. 反证法:如果得到的两个数的最大公约数不是1,那么把此时的最大公约数乘以上边的最大公约数,得到的一定比上…...
出牌游戏(game)
安徽省2016年信息学竞赛试题(小学组) 题目描述 Description 小学生卡卡西最喜欢的电影是哈利波特,她一直幻想着自己可以进入神奇的魔法世界,今年暑假的一个傍晚,一只猫头鹰带着一封神秘的邀请函来到了她的家中,邀请函里是一张车…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...
