基础入门 React Native 鸿蒙跨平台开发:react-native-easy-toast三方库适配
欢迎加入开源鸿蒙跨平台社区https://openharmonycrossplatform.csdn.net 前言Toast 提示是移动应用中常见的轻量级通知组件用于显示简短的信息提示、操作反馈等。react-native-easy-toast 是一个简单易用的 Toast 组件库提供丰富的配置选项和动画效果完全支持鸿蒙系统。使用 react-native-easy-toast 可以快速构建美观的提示组件大大提升开发效率。 库简介基本信息库名称: react-native-easy-toast当前版本: 2.3.0官方仓库: https://github.com/crazycodeboy/react-native-easy-toast主要功能:提供简洁易用的 Toast 组件支持自定义样式和位置支持自动隐藏和手动隐藏完全兼容 Android、iOS 和 HarmonyOS为什么需要这个库零配置: 纯 JavaScript 实现无需原生配置轻量级: 代码简洁体积小易用性: API 简单直观开箱即用跨平台: 在三端提供一致的体验灵活性: 支持自定义样式和动画 安装步骤1. 使用 npm 安装在项目根目录执行以下命令npminstallreact-native-easy-toast2.3.02. 验证安装安装完成后检查package.json文件应该能看到新增的依赖{dependencies:{react-native-easy-toast:^2.3.0,// ... 其他依赖}} HarmonyOS 平台配置react-native-easy-toast 是纯 JavaScript 组件无需任何原生配置。配置说明✅无需 Manual Link: 不需要手动链接原生代码✅无需 CMakeLists 配置: 不需要修改 CMakeLists.txt✅无需 PackageProvider 配置: 不需要修改 PackageProvider.cpp✅无需 ArkTs 配置: 不需要修改任何 ArkTs 文件✅即装即用: 安装后直接 import 使用TypeScript 类型声明可选react-native-easy-toast包自带了类型声明文件但是包自带的类型声明中缺少style属性的定义导致在使用style属性时会出现类型错误。解决方案创建类型声明扩展文件在项目根目录创建react-native-easy-toast.d.ts文件使用模块增强的方式扩展包自带的类型声明/** * react-native-easy-toast 类型声明扩展 * 扩展 node_modules 中的类型声明添加 style 属性支持 */import{StyleProp,ViewStyle}fromreact-native;declaremodulereact-native-easy-toast{// 扩展 IDuration 接口添加 LENGTH_LONGinterfaceIDuration{LENGTH_SHORT:number;LENGTH_LONG:number;FOREVER:number;}// 扩展 ToastComponentProps 接口添加 style 属性interfaceToastComponentProps{style?:StylePropViewStyle;position?:bottom|center|top;textStyle?:{};positionValue?:number;fadeInDuration?:number;fadeOutDuration?:number;opacity?:number;}}这个文件使用模块增强的方式扩展包自带的类型声明避免重复声明导致的类型冲突同时添加style属性和LENGTH_LONG常量的支持。 完整代码示例下面是一个完整的示例展示了react-native-easy-toast的各种使用场景。注意由于 Toast 组件的样式是固定的来自组件的 props要实现不同样式的 Toast需要为每种类型创建独立的 Toast 组件实例。importReact,{useRef}fromreact;import{View,Text,StyleSheet,ScrollView,SafeAreaView,TouchableOpacity,}fromreact-native;importToast,{DURATION}fromreact-native-easy-toast;functionEasyToastScreen(){// 创建多个 Toast 引用每个对应不同的样式constbasicToastRefuseRefToast(null);constsuccessToastRefuseRefToast(null);consterrorToastRefuseRefToast(null);constwarningToastRefuseRefToast(null);constshowBasicToast(){basicToastRef.current?.show(这是一个基础提示,DURATION.LENGTH_SHORT);};constshowLongToast(){basicToastRef.current?.show(这是一个长提示会显示较长时间,DURATION.LENGTH_SHORT*3);};constshowSuccessToast(){successToastRef.current?.show(操作成功,DURATION.LENGTH_SHORT);};constshowErrorToast(){errorToastRef.current?.show(操作失败请重试,DURATION.LENGTH_SHORT);};constshowWarningToast(){warningToastRef.current?.show(警告信息,DURATION.LENGTH_SHORT);};constshowCustomStyleToast(){basicToastRef.current?.show(自定义样式提示,2000,(){console.log(Toast 已隐藏);});};constshowPositionToast(){basicToastRef.current?.show(顶部提示,2000);};return(SafeAreaView style{styles.container}ScrollView style{styles.scrollView}Text style{styles.pageTitle}EasyToast 提示组件/Text{/* 基础提示 */}View style{styles.section}Text style{styles.sectionTitle}基础提示/TextTouchableOpacity style{styles.button}onPress{showBasicToast}Text style{styles.buttonText}显示基础提示/Text/TouchableOpacityTouchableOpacity style{styles.button}onPress{showLongToast}Text style{styles.buttonText}显示长提示/Text/TouchableOpacity/View{/* 不同类型的提示 */}View style{styles.section}Text style{styles.sectionTitle}不同类型的提示/TextTouchableOpacity style{[styles.button,styles.successButton]}onPress{showSuccessToast}Text style{styles.buttonText}成功提示/Text/TouchableOpacityTouchableOpacity style{[styles.button,styles.errorButton]}onPress{showErrorToast}Text style{styles.buttonText}错误提示/Text/TouchableOpacityTouchableOpacity style{[styles.button,styles.warningButton]}onPress{showWarningToast}Text style{styles.buttonText}警告提示/Text/TouchableOpacity/View{/* 自定义样式提示 */}View style{styles.section}Text style{styles.sectionTitle}自定义样式提示/TextTouchableOpacity style{styles.button}onPress{showCustomStyleToast}Text style{styles.buttonText}显示自定义样式/Text/TouchableOpacity/View{/* 位置提示 */}View style{styles.section}Text style{styles.sectionTitle}位置提示/TextTouchableOpacity style{styles.button}onPress{showPositionToast}Text style{styles.buttonText}显示顶部提示/Text/TouchableOpacity/View{/* 使用说明 */}View style{styles.section}Text style{styles.sectionTitle}使用说明/TextText style{styles.instructionText}1.react-native-easy-toast 是纯 JavaScript 组件无需原生配置/TextText style{styles.instructionText}2.使用 useRef 创建 Toast 引用/TextText style{styles.instructionText}3.通过 toastRef.current?.show()方法显示提示/TextText style{styles.instructionText}4.支持自定义显示时长和回调函数/TextText style{styles.instructionText}5.不同样式的 Toast 需要创建独立的组件实例/TextText style{styles.instructionText}6.完全兼容鸿蒙系统跨平台可用/Text/View/ScrollView{/* 基础 Toast - 黑色背景 */}Toast ref{basicToastRef}style{styles.basicToast}positiontoppositionValue{100}fadeInDuration{750}fadeOutDuration{1000}opacity{0.8}textStyle{styles.basicToastText}/{/* 成功 Toast - 绿色背景 */}Toast ref{successToastRef}style{styles.successToast}positiontoppositionValue{100}fadeInDuration{750}fadeOutDuration{1000}opacity{0.9}textStyle{styles.successToastText}/{/* 错误 Toast - 红色背景 */}Toast ref{errorToastRef}style{styles.errorToast}positiontoppositionValue{100}fadeInDuration{750}fadeOutDuration{1000}opacity{0.9}textStyle{styles.errorToastText}/{/* 警告 Toast - 黄色背景 */}Toast ref{warningToastRef}style{styles.warningToast}positiontoppositionValue{100}fadeInDuration{750}fadeOutDuration{1000}opacity{0.9}textStyle{styles.warningToastText}//SafeAreaView);}conststylesStyleSheet.create({container:{flex:1,backgroundColor:#f5f5f5,},scrollView:{flex:1,padding:20,},pageTitle:{fontSize:24,fontWeight:bold,marginBottom:20,textAlign:center,color:#333,},section:{backgroundColor:#fff,borderRadius:8,padding:16,marginBottom:16,shadowColor:#000,shadowOffset:{width:0,height:1},shadowOpacity:0.1,shadowRadius:2,elevation:2,},sectionTitle:{fontSize:16,fontWeight:600,marginBottom:12,color:#333,},button:{backgroundColor:#007AFF,borderRadius:8,paddingVertical:12,paddingHorizontal:24,marginBottom:8,alignItems:center,},successButton:{backgroundColor:#28a745,},errorButton:{backgroundColor:#dc3545,},warningButton:{backgroundColor:#ffc107,},buttonText:{color:#fff,fontSize:14,fontWeight:500,},// 基础 Toast 样式 - 黑色basicToast:{backgroundColor:#000,borderRadius:8,padding:12,marginHorizontal:20,},basicToastText:{color:#fff,fontSize:14,textAlign:center,},// 成功 Toast 样式 - 绿色successToast:{backgroundColor:#28a745,borderRadius:8,padding:12,marginHorizontal:20,},successToastText:{color:#fff,fontSize:14,fontWeight:600,textAlign:center,},// 错误 Toast 样式 - 红色errorToast:{backgroundColor:#dc3545,borderRadius:8,padding:12,marginHorizontal:20,},errorToastText:{color:#fff,fontSize:14,fontWeight:600,textAlign:center,},// 警告 Toast 样式 - 黄色warningToast:{backgroundColor:#ffc107,borderRadius:8,padding:12,marginHorizontal:20,},warningToastText:{color:#000,fontSize:14,fontWeight:600,textAlign:center,},instructionText:{fontSize:14,lineHeight:22,marginBottom:6,color:#666,},});exportdefaultEasyToastScreen; 代码讲解1. 基础提示consttoastRefuseRefToast(null);toastRef.current?.show(这是一个基础提示,DURATION.LENGTH_SHORT);使用 useRef 创建 Toast 引用通过 show 方法显示提示。2. 不同时长toastRef.current?.show(短提示,DURATION.LENGTH_SHORT);toastRef.current?.show(长提示,DURATION.LENGTH_SHORT*3);DURATION.LENGTH_SHORT: 短时间显示约2秒DURATION.LENGTH_LONG: 长时间显示约3.5秒3. 自定义时长toastRef.current?.show(自定义时长,2000,(){console.log(Toast 已隐藏);});可以自定义显示时长毫秒和隐藏回调函数。4. 自定义样式Toast ref{toastRef}style{styles.toast}textStyle{styles.toastText}/通过 style 和 textStyle 属性自定义样式。⚠️ 注意事项与最佳实践1. 引用管理consttoastRefuseRefToast(null);使用 useRef 管理 Toast 引用。2. 显示时长短提示使用DURATION.LENGTH_SHORT长提示使用DURATION.LENGTH_LONG自定义时长直接传入毫秒数3. 回调函数toastRef.current?.show(提示,2000,(){console.log(提示已隐藏);});可以设置隐藏后的回调函数。4. 样式定制conststylesStyleSheet.create({toast:{backgroundColor:#000,borderRadius:8,padding:12,},});使用 StyleSheet 创建自定义样式。5. HarmonyOS 兼容性react-native-easy-toast 是纯 JavaScript 组件在 HarmonyOS 上完全兼容无需任何额外配置。 测试验证1. Android 平台测试npmrun android测试要点:检查 Toast 显示和隐藏验证动画效果测试不同时长2. iOS 平台测试npmrun ios测试要点:检查 Toast 样式一致性验证位置显示测试触摸交互3. HarmonyOS 平台测试npmrun harmony测试要点:验证 Toast 渲染测试显示和隐藏检查样式应用 总结通过集成react-native-easy-toast我们为项目添加了一个简单易用的 Toast 提示组件库。这个库提供了丰富的配置选项、动画效果支持和跨平台的一致性可以大大提升开发效率。关键要点回顾✅安装依赖:npm install react-native-easy-toast2.3.0✅配置平台: 纯 JavaScript 库无需手动配置✅集成代码: 使用 Toast 组件和 show 方法✅样式定制: 使用 style 和 textStyle 属性✅测试验证: 确保三端表现一致

相关新闻

实测对比后AI论文工具,千笔 VS 灵感风暴AI更贴合专科生需求

实测对比后AI论文工具,千笔 VS 灵感风暴AI更贴合专科生需求

随着人工智能技术的迅猛迭代与普及,AI辅助写作工具已逐步渗透到高校学术写作场景中,成为专科生、本科生、研究生完成毕业论文不可或缺的辅助手段。越来越多面临毕业论文压力的学生,开始依赖各类AI工具简化写作流程、提升创作效率。但与此同时…

2026/7/6 14:11:44 阅读更多 →
干货来了:自考必备的降AIGC工具 —— 千笔·降AIGC助手

干货来了:自考必备的降AIGC工具 —— 千笔·降AIGC助手

在AI技术不断渗透学术写作的当下,越来越多的学生和研究者开始依赖AI工具提升写作效率。然而,随之而来的“AI率超标”问题却成为论文通过审核的一大隐患。随着知网、Turnitin等查重系统对AI生成内容的识别能力不断提升,如何有效降低AI痕迹与重…

2026/5/17 5:46:30 阅读更多 →
定稿前必看!AI论文写作软件 千笔·专业论文写作工具 VS Checkjie,研究生专属神器!

定稿前必看!AI论文写作软件 千笔·专业论文写作工具 VS Checkjie,研究生专属神器!

随着人工智能技术的迅猛迭代与普及,AI辅助写作工具已逐步渗透到高校学术写作场景中,成为研究生完成毕业论文不可或缺的辅助手段。越来越多面临毕业论文压力的学生,开始依赖各类AI工具简化写作流程、提升创作效率。但与此同时,市场…

2026/5/17 5:46:30 阅读更多 →

最新新闻

【电动机】等效电路建模对三相感应电动机Matlab仿真

【电动机】等效电路建模对三相感应电动机Matlab仿真

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。🍎完整代码获取 定制创新 论文复现私信🍊个人信条:做科研,博学之、审问之、慎思之、明辨之、…

2026/7/7 10:38:49 阅读更多 →
多机器人路径执行时间预测:从几何优化到物理时空建模

多机器人路径执行时间预测:从几何优化到物理时空建模

1. 项目概述:为什么“执行时间”正在取代“路径长度”成为多机器人调度的黄金标尺我干多机器人协同调度这行快十二年了,从最早在实验室里用几个差速轮小车跑A*算法,到后来带团队给港口AGV系统做全局路径优化,踩过的坑比走过的路还…

2026/7/7 10:38:49 阅读更多 →
ai论文生成靠谱吗?我用3款AI论文网站各生成了一篇,结果出乎意料

ai论文生成靠谱吗?我用3款AI论文网站各生成了一篇,结果出乎意料

宝子们,说真的,谁懂啊!当年我写毕业论文,熬了整整一个月大夜,头发一把一把掉! 导师还把我的大纲打回来三次,查重率一度飙到50%!真的绝了,当时感觉人生都灰暗了。 但你们知…

2026/7/7 10:38:49 阅读更多 →
3个痛点一次解决:番茄小说下载器让你的阅读体验全面升级

3个痛点一次解决:番茄小说下载器让你的阅读体验全面升级

3个痛点一次解决:番茄小说下载器让你的阅读体验全面升级 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 你是否曾经在深夜追更小说时,突然发现网络连接…

2026/7/7 10:36:49 阅读更多 →
2026年VR看房系统行业观察

2026年VR看房系统行业观察

VR看房系统是借助VR相机和三维场景构建算法,将线下房源以1:1比例复刻到线上,形成可步进式漫游、可交互的虚拟看房体验。2024年全球VR看房系统市场规模约19.08亿美元,预计2031年将达33.24亿美元,年复合增长率8.3%。在中…

2026/7/7 10:34:48 阅读更多 →
WorkBuddy 智能办公效能全景展示

WorkBuddy 智能办公效能全景展示

在日常的高强度工作中,我们常常被淹没在碎片化的信息流里:早上要处理几十封邮件,中午要消化几份长篇行业报告,下午还得紧接着准备跨部门的会议材料。最让人头疼的往往不是工作本身有多难,而是大量时间都消耗在了格式转…

2026/7/7 10:34:48 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻