You need to enable JavaScript to run this app. React Native中通过route.params传递base64图片参数为undefined如何解决
优惠活动
大模型
产品
解决方案
定价
更多

React Native中通过route.params传递base64图片参数为undefined如何解决

问题原因
  • 传参格式错误:React Navigation的navigate方法仅接收两个参数,第一个是目标路由名称,第二个是要传递的参数对象。你当前的写法navigate('Save', saveImage(), {result})把参数对象放在了第三个位置,框架不会识别该参数,自然无法在第二个页面获取到result。
  • 异步逻辑执行顺序错误:saveImage是异步函数,直接在navigate中调用时,不会等待截图生成base64的逻辑执行完成就会触发跳转,此时result还未被赋值。
  • state更新异步问题:setResult是React的异步状态更新方法,调用后不会立刻修改result变量的值,就算等待saveImage执行完成后立刻读取result,拿到的还是更新前的旧值。
解决方案

调整逻辑为:先触发截图生成base64的逻辑,等待生成完成后直接使用返回的base64值进行跳转传参,不需要依赖state中转,修改后的代码如下:

// 保留原有saveImage方法的话,新增返回值
const saveImage = async () => {
  const image = await captureRef(inputEl, {
      result: 'base64',
      quality: 1,
      format: 'png',
    });
    setResult(image);
    // 新增返回生成的base64结果
    return image;
};

// 新增跳转触发方法,等待base64生成后再跳转
const handleNavigateToSave = async () => {
  const imageBase64 = await saveImage();
  // 参数放在navigate的第二个位置
  props.navigation.navigate('Save', { result: imageBase64 });
};

// 替换原有onPress绑定
onPress={handleNavigateToSave}

第二个页面的渲染逻辑可以增加空值判断避免报错:

<Image 
  style={styles.image} 
  source={{ uri: `data:image/png;base64,${props.route?.params?.result}` }}
/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 19:24:03