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

React Native组件导入异步JS工具函数时出现undefined问题

解决React Native工具函数导入后undefined的问题

从你贴的代码最后一行export functi...能看出来,核心问题应该是函数的导出语句没有写完,这直接导致组件导入时无法识别到正确的函数引用。下面给你一步步的解决方案:

1. 修正PremiumStatus.js的导出语法

你需要确保函数被正确导出,有两种常用的方式:

方式一:命名导出(推荐,适合多个工具函数的场景)

直接在函数定义前加上export关键字:

import * as InAppPurchase from 'react-native-iap';
import { AsyncStorage } from "react-native";

// 直接用export标记函数为可导出
export async function getPreviousPurchases() {
  let purchases;
  try {
    purchases = await InAppPurchase.getPurchaseHistory();
    console.log("previous purchases: ", purchases);
  } catch (e) {
    console.warn(e);
  }
  return purchases;
}

方式二:默认导出(适合单个核心函数的场景)

如果这个文件主要就是这个函数,可以用默认导出:

import * as InAppPurchase from 'react-native-iap';
import { AsyncStorage } from "react-native";

async function getPreviousPurchases() {
  let purchases;
  try {
    purchases = await InAppPurchase.getPurchaseHistory();
    console.log("previous purchases: ", purchases);
  } catch (e) {
    console.warn(e);
  }
  return purchases;
}

// 导出为默认模块
export default getPreviousPurchases;

2. 在React Native组件中正确导入

根据你选择的导出方式,对应不同的导入写法:

如果是命名导出

// 注意要用花括号包裹函数名
import { getPreviousPurchases } from './PremiumStatus';

// 在组件中使用(比如在useEffect里调用)
useEffect(() => {
  const fetchPurchases = async () => {
    const purchases = await getPreviousPurchases();
    // 处理购买数据
  };
  fetchPurchases();
}, []);

如果是默认导出

// 不需要花括号,直接导入
import getPreviousPurchases from './PremiumStatus';

// 调用方式和上面一致
useEffect(() => {
  const fetchPurchases = async () => {
    const purchases = await getPreviousPurchases();
    // 处理购买数据
  };
  fetchPurchases();
}, []);

额外排查点

  • 确认文件路径是否正确:如果PremiumStatus.js不在当前组件的同级目录,要调整路径(比如../utils/PremiumStatus)。
  • 检查拼写:函数名getPreviousPurchases是大小写敏感的,导出和导入时要完全一致。
  • 确保react-native-iap已正确安装:可以运行npm install react-native-iap或yarn add react-native-iap重新安装,RN 0.60+会自动链接,低版本可能需要手动链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:11:11