React Native + Redux实现一个公共消息组件

一、安装依赖

npm i @reduxjs/toolkit  react-redux 

二、创建store与slice

import {createSlice} from '@reduxjs/toolkit'const messageSlice = createSlice({name: 'message',initialState: {isShow: false,message: '',type: ''},reducers: {showMessage: (state,action) => {const { type, message } = action.payload;state.isShow = truestate.message = messagestate.type = type},hideMessage: (state) => {state.isShow = false}}
})export const { showMessage,hideMessage } = messageSlice.actions
export default messageSlice.reducer
import {configureStore} from '@reduxjs/toolkit'
import messageSlice from "@/store/slices/messageSlice";const store = configureStore({reducer: {message: messageSlice}
})export default store

三、自定义消息组件SimpleToast

import React, {useEffect, useRef} from 'react';
import {View,Text,StyleSheet
} from 'react-native';
import {useDispatch, useSelector} from 'react-redux'
import {hideMessage} from '@/store/slices/messageSlice'const SimpleToast = () => {const duration = 1500;const {isShow, message, type} = useSelector((state) => state.message);const timerRef = useRef(null);const dispatch = useDispatch();const getBackgroundColor = () => {const colors = {info: '#1890ff',success: '#52c41a',warning: '#fa8c16',error: '#ff4d4f'};return colors[type] || colors.info;};useEffect(() => {if (isShow) {// 清空之前的定时器if (timerRef.current) {clearTimeout(timerRef.current);}// 自动关闭timerRef.current = setTimeout(() => {dispatch(hideMessage());}, duration);}// 组件卸载时清理return () => {if (timerRef.current) {clearTimeout(timerRef.current);}};}, [isShow]);if (!isShow) {return null;}return (<Viewstyle={[styles.container,{backgroundColor: getBackgroundColor(),}]}pointerEvents="none" // 防止 toast 遮挡下方元素><Text style={styles.message} numberOfLines={2}>{message}</Text></View>);
};const styles = StyleSheet.create({container: {position: 'absolute',alignSelf: 'center', // 水平居中top: 100, // 距离顶部100pxzIndex: 9999,paddingHorizontal: 16,paddingVertical: 12,borderRadius: 8,maxWidth: '80%', // 最大宽度为屏幕宽度的80%},message: {color: 'white', // 文字为白色fontSize: 14,fontWeight: '500',textAlign: 'center',lineHeight: 20,// 不设置固定宽度,让文字自适应}
});export default SimpleToast;

四、放入app目录下的配置_layout.js中

import {Slot} from 'expo-router';
import '@/global.css'
import {Provider} from 'react-redux';
import store from "@/store";
import AuthInitializer from "@/components/AuthInitializer";
import SimpleToast from "@/components/SimpleToast";export default function Layout() {return <Provider store={store}><AuthInitializer><SimpleToast/><Slot/></AuthInitializer></Provider>
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1214678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026学历提升优选:口碑学校开启智慧之门,国家开放大学招生/成人学历提升/学历提升/专升本报名,学历提升学校哪个好

评测背景 随着社会竞争加剧与职场需求升级,成人学历提升已成为职场人突破职业瓶颈的核心路径。据教育部数据显示,2023年成人高等教育报考人数突破1200万,自考、成人高考、国家开放大学三大主流路径占据90%以上市场份…

当AI成为“决策代理“,谁来承担责任?

这项由Oleg Romanchuk和Roman Bondar合作完成的研究发表于2026年1月&#xff0c;论文编号为arXiv:2601.15059v1&#xff0c;专门分析了现代软件开发中一个令人担忧的现象。随着AI代理系统在企业中大规模部署&#xff0c;一种被称为"责任真空"的组织失败模式正在悄然出…

赫瑞-瓦特大学突破:AI实现想象与推理驱动的图像搜索

这项由赫瑞-瓦特大学BCML实验室主导的开创性研究发表于2026年迪拜举办的第26届国际万维网大会(WWW 26)&#xff0c;论文编号为979-8-4007-2307-0/26/04&#xff0c;有兴趣深入了解的读者可以通过论文标识码10.1145/3774904.3792276查询完整论文。 在我们的数字生活中&#xff0…

上海交大突破:AI医疗助手提升临床决策准确率近三成

这项由上海交通大学与上海人工智能实验室合作完成的研究于2026年1月发表&#xff0c;研究编号为arXiv:2601.13918v1&#xff0c;有兴趣深入了解的读者可以通过该编号查询完整论文。传统的医疗AI系统就像一个只能"向前看"的医生&#xff0c;它们在处理复杂的电子病历时…

西安交通大学团队开发APOLO:让AI学会自己优化提示词

这项由西安交通大学计算机科学与技术学院联合新加坡国立大学苏瑞福公共卫生学院共同开展的研究&#xff0c;发表于2023年《IEEE情感计算汇刊》第14卷第3期&#xff08;页码1731-1747&#xff09;&#xff0c;为自动化提示词优化在心理健康诊断领域提供了创新解决方案。有兴趣深…

人大重大突破:让AI自己培养自己,无需人类老师也能变更聪明

这项由人民大学高瓴人工智能学院领导的研究发表于2026年1月&#xff0c;论文编号为arXiv:2601.13761v2&#xff0c;有兴趣深入了解的读者可以通过该编号查询完整论文。 想象一下&#xff0c;如果一个学生能够自己出题、自己做题、自己批改&#xff0c;还能让自己越来越聪明&…

中科院等机构Numina-Lean-Agent:简化数学定理证明流程

这项由中科院数学与系统科学研究院、利物浦大学、西安交通-利物浦大学等十余家知名机构联合完成的研究于2026年1月发表&#xff0c;论文编号为arXiv:2601.14027v1。对于想要深入了解技术细节的读者&#xff0c;可以通过这个编号查询完整论文。 在数学的世界里&#xff0c;证明一…

北航和新加坡国立大学联合推出“快慢思考“式智能探索系统

这项由北京航空航天大学和新加坡国立大学机械工程系联合开展的研究发表于2026年1月&#xff0c;论文编号为arXiv:2601.14681v1。有兴趣深入了解的读者可以通过该编号查询完整论文。想象一下&#xff0c;当你第一次走进一座陌生的大型商场时会怎么做&#xff1f;你可能会先站在入…

香港科技大学开发WebSeek:让网页数据分析像搭积木一样简单

你有没有这样的经历&#xff1a;想要比较不同网站的商品价格&#xff0c;或者需要从各个新闻网站收集信息来验证一条消息的真实性&#xff0c;结果发现自己在无数个浏览器标签页之间疲于奔命&#xff0c;还要不断地复制粘贴数据到Excel表格中&#xff1f;这种碎片化的工作方式不…

细聊EVA胶带零售厂家排名,看看哪家性价比高

问题1:市场上EVA胶带零售厂家这么多,怎么判断哪家更靠谱? 对于需要EVA胶带零售的客户来说,选择厂家时容易陷入只看价格的误区,却忽略了后续使用中的品质隐患——比如胶带粘性不足导致脱落、泡棉密度不够影响缓冲效…

说说电动葫芦国产品牌有哪些,哪家口碑更好

2026年工业制造与物流仓储领域持续升级,电动葫芦作为物料搬运的核心设备,其性能稳定性、适配性与服务保障直接影响企业生产效率与运营安全。无论是车间生产线的精准吊装,还是物流仓储的高效转运,优质电动葫芦供应企…

复旦团队发现:AI教学助手能力需精准匹配学生水平

这项由复旦大学、上海人工智能实验室等多个机构联合完成的研究于2026年1月发表在arXiv预印本平台&#xff0c;论文编号为arXiv:2601.14249v1。有兴趣深入了解的读者可以通过该编号查询完整论文。在人工智能快速发展的今天&#xff0c;我们经常听到这样一个说法&#xff1a;要想…

启程国际旅行社排名情况如何?客户投诉多吗,实力究竟如何?

本榜单依托全维度市场调研与真实游客口碑,深度筛选出五家北京标杆旅行社企业,为游客出行及同业合作提供客观依据,助力精准匹配适配的旅游服务伙伴。 TOP1 推荐:北京启程国际旅行社有限公司 推荐指数:★★★★★ |…

斯坦福大学揭秘:AI大模型如何像人类一样“思考“问题?

这项由斯坦福大学人工智能实验室主导的研究发表于2024年&#xff0c;论文编号为arXiv:2412.14689。研究团队深入探讨了大型语言模型在推理过程中的内部工作机制&#xff0c;为我们理解AI如何"思考"提供了全新视角。有兴趣深入了解的读者可以通过该编号在学术数据库中…

2026年有名的GEO优化品牌企业,数石网络实战效果惊人

在AI搜索成为用户获取信息核心渠道的当下,企业能否在DeepSeek、豆包等主流AI平台被精准推荐,直接决定了潜在客户的触达效率。面对市场上良莠不齐的GEO优化服务商,如何选择真正能带来精准线索的合作伙伴?以下结合不…

2026年成都婚纱摄影星级榜权威推荐|三川影像领跑,沐纱居次席

2026年成都婚纱摄影星级榜权威推荐|三川影像领跑,沐纱居次席2026年初,成都婚拍市场迎来新一轮口碑榜单。基于资质合规、服务细节、原创风格、客户评价及售后保障五大维度的综合评估,多家摄影机构展开激烈角逐。其中…

钱鑫珠宝甄选白银回收深度测评:15年本地老牌,变现透明无套路的优质选择

钱鑫珠宝甄选白银回收深度测评:15年本地老牌,变现透明无套路的优质选择在白银市场行情走高的当下,闲置白银变现成为不少人的需求,但“高价诱惑、克重缩水、暗扣损耗”等行业套路让消费者望而却步。钱鑫珠宝甄选作为…

面试官:RocketMQ 消息堆积了怎么处理?

面试考察点 面试官提出这个问题&#xff0c;主要希望考察候选人以下几个方面的能力&#xff1a; 问题诊断能力&#xff1a;候选人能否系统性地分析消息堆积的根源&#xff0c;而不仅仅是给出解决方案。这包括区分是 “生产者流量激增” 还是 “消费者消费能力不足” 导致的问题…

MySQL锁机制与死锁排查实战

“数据库死锁了”——这句话我在线上听过无数次。 锁是MySQL保证数据一致性的核心机制&#xff0c;但用不好就是各种问题。这篇从原理到排查&#xff0c;把锁这块讲透。 MySQL锁的分类 按粒度分 锁类型说明开销并发度引擎表锁锁整张表低低MyISAM/InnoDB行锁锁单行高高InnoDB…

Spring 才是撑起Java半边天的秘密武器?如果Spring 撂挑子了,Java 会不会一年内就跌下神坛?

长期以来&#xff0c;Java 被企业级开发广泛使用&#xff0c;但常被吐槽“繁琐、冗长、启动慢”。在云原生、微服务成为趋势的今天&#xff0c;Go、Python 等语言以轻量、快速吸引了大量开发者。 然而现实是&#xff1a;Java 能在企业级开发中长期占据主导地位&#xff0c;全靠…