You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中Object.keys打印正常但App内显示undefined如何解决

问题根因

你遇到的报错本质是调用Object.keys()时传入了undefined值。因为Firebase Realtime Database的数据是异步拉取的,组件首次渲染时postDetail还没拿到后端返回的完整数据,此时postDetail.sizes为undefined,调用Object.keys(undefined)就会抛出你遇到的报错。

修正方案

你可以通过可选链判断+兜底的方式解决,修正后的代码如下:

<View style={{ flexDirection: 'row', flexWrap: 'wrap' }}>
    {
        postDetail?.sizes ? Object.keys(postDetail.sizes).map((item) => {
            // 给列表项添加唯一key,避免React Native抛出列表渲染警告
            return <View key={item}>
                <Text style={{ color: 'black', fontWeight: 'normal' }}>{item}</Text>
            </View>
        }) : null
    }
</View>

如果你的React Native版本不支持可选链语法,可以把判断条件替换为postDetail && postDetail.sizes即可。

额外优化建议

  • 如果你用useState存储postDetail,可以给初始值提前设置sizes的兜底空对象:const [postDetail, setPostDetail] = useState({ sizes: {} }),同样可以避免首次渲染报错。
  • 如果需要展示加载状态,可以把上面代码里的兜底null替换为加载提示组件,比如<Text>加载中...</Text>。

内容的提问来源于stack exchange,提问作者Vaishnav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:06:08