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

React Native传递字符串至函数时出现undefined的原因排查

React Native 传参异常:accountChecks 接收参数全为 undefined

我是JS和React Native新手,在点击组件传递用户登录信息到另一个文件的函数时遇到问题,目标函数里拿到的参数全是undefined。

相关代码

loginButton.js

// 提交按钮点击时触发的函数
async function submitInfo(name, id, grade, email, password, { navigation }) {
    await accountChecks(name, email, password).then(() => {       
        // 后续操作
    }).catch((error) => {
        Alert.alert(error);   
    });
}

// 提交按钮组件
function InfoSubmit( { name, id, grade, email, password, navigation} ) {
    return (
        <Pressable style={styles.submitButton} onPress={() => submitInfo(name, id, grade, email, password, {navigation})}>
            <Text style={styles.submitButtonText}>
                submit
            </Text>
        </Pressable>
    );
}

accountChecks 所在文件

function accountChecks(name, email, password) {
    // 打印数据及类型
    console.log(name, email, password);
    console.log(typeof(name), typeof(email), typeof(password));

    // 账号校验逻辑
}

export default accountChecks();

问题现象

调用accountChecks后,控制台输出:

LOG  undefined undefined undefined
LOG  undefined undefined undefined

我在论坛找过解决方案但没找到匹配的,求帮忙。


解决方案

问题核心出在accountChecks的导出语句上:

  • 你写的export default accountChecks();是立即调用函数并导出它的返回值,而非导出函数本身。这会导致accountChecks在模块加载时就被无参数执行一次(所以输出undefined),后续submitInfo里调用的其实是这个函数的返回值(undefined),自然无法正确传参。

修正方法:把导出语句改成导出函数引用:

export default accountChecks;

另外补充一个优化点:submitInfo里同时使用await和.then()属于冗余写法,可以二选一,比如改成更简洁的try/catch形式:

async function submitInfo(name, id, grade, email, password, { navigation }) {
    try {
        await accountChecks(name, email, password);
        // 后续操作
    } catch (error) {
        Alert.alert(error);   
    }
}

修改后参数就能正常传递到accountChecks中了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 09:02:11