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

React Native点击按钮传文本至其他屏幕报错:Cannot read property 'song' of undefined

问题分析与解决

错误根源

  1. 参数传递路径错误:你从PostScreen导航到Root(Tab导航容器)时,参数会被传递给Root路由而非直接传给TabOneScreen,导致TabOneScreen无法拿到song参数。
  2. 空值未处理:TabOneScreen首次加载时route.params为undefined,直接访问route.params.song会触发"Cannot read property 'song' of undefined"错误。

修复步骤

1. 修正PostScreen的导航逻辑

修改saveSong函数,直接指定跳转到TabOne并传递参数:

const saveSong = () => {
    navigation.navigate('Root', {
        screen: 'TabOne', // 明确指定目标Tab页面
        params: { song: song }
    });
};

2. 处理TabOneScreen的空值访问

在访问song参数前添加空值判断,避免报错:

// 替换原有的歌曲展示文本行
<Text style={{ fontSize: 20}}> 
  The song you recently posted is: {route.params?.song || '暂无歌曲'}
</Text>

也可以用条件渲染控制显示:

{route.params && (
  <Text style={{ fontSize: 20}}> 
    The song you recently posted is: {route.params.song}
  </Text>
)}

可选优化

如果需要在Tab切换时保留歌曲信息,建议使用React Context或AsyncStorage做全局状态存储,避免依赖导航参数传递数据。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:13:12