如何在React-Native的Drawer.Screen头部展示React-Redux获取的数据
解决方案
首先明确:info_agency是数组类型,你直接用info_agency.NomAgence肯定取不到值——数组本身没有这个属性,得先访问数组里的具体元素。另外FlatList是用来渲染列表数据的,头部只需要展示单个代理名称,完全用不上FlatList。
按以下步骤修改:
- 第一步:通过useSelector获取数据后,先判断数组是否有内容,再取对应元素的
NomAgence - 第二步:处理数据未加载完成的边界情况,避免出现报错或空白
示例代码如下:
import { useSelector } from 'react-redux'; function YourDrawerScreen() { // 获取Redux中的代理信息数组,替换成你的实际reducer路径 const info_agency = useSelector(state => state.yourReducer.info_agency); // 提取代理名称:数组有数据则取第一个元素的NomAgence,否则显示占位符 const agencyName = info_agency?.length > 0 ? info_agency[0].NomAgence : '加载中...'; return ( <Drawer.Navigator screenOptions={{ header: () => <HeaderUser Gtitle={agencyName} /> }} > {/* 你的屏幕组件 */} </Drawer.Navigator> ); }
如果info_agency数组里有多个代理,需要展示当前选中的代理名称,可以在Redux里额外存储当前选中的代理索引/ID,再从数组中匹配:
const info_agency = useSelector(state => state.yourReducer.info_agency); const currentAgencyId = useSelector(state => state.yourReducer.currentAgencyId); const currentAgency = info_agency?.find(item => item.id === currentAgencyId); const agencyName = currentAgency?.NomAgence || '加载中...';
关键注意点:
- 用可选链
?.和空值合并||处理数据未加载或不存在的情况,避免React报错 - 头部只需要单个文本值,不需要用FlatList这类列表组件
- 可以在组件里
console.log(info_agency)确认数据结构和内容,确保Redux中的数据已正确填充
内容的提问来源于stack exchange,提问作者Max Ngassa
相关产品推荐
相关产品推荐

