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

设置页跳转登录注册页报‘undefined is not a function’错误求助

问题分析与解决

核心错误原因

你遇到的undefined is not a function报错,本质是组件未正确获取navigation对象:在Settings组件中,你直接将参数当作navigation使用,但React Navigation传递给组件的是包含navigation的props对象,必须通过解构才能正确提取。

具体修复步骤

1. 修正Settings组件的navigation获取方式

将:

const Settings = (navigation) => {

修改为:

const Settings = ({ navigation }) => {

通过解构props,才能正确拿到navigation对象并调用navigate方法。

2. 修复LogInSignUp组件的标签错误

React Native不支持Web端的<div>标签,替换为RN原生组件:

import React from 'react'
import { View, Text, StyleSheet } from 'react-native';

const LogInSignUp = () => {
  return (
    <View style={styles.container}>
      <Text>LogInSignUp</Text>
    </View>
  )
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center'
  }
})

export default LogInSignUp

3. 优化App.js的栈导航配置

你的App.js中重复注册了Tabs作为Home和Settings的组件,属于冗余配置。Tabs作为底部导航本身已包含Settings页面,栈导航只需保留Home(对应Tabs)和LogInSignUp即可:

import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import Tabs from './navigation/tabs';
import "react-native-url-polyfill/auto"
import LogInSignUp from './SettingsScreen/LogInSignUp';

const Stack = createStackNavigator();

const App = () => {
    return (
        <NavigationContainer>
          <Stack.Navigator screenOptions={{ headerShown: false }}>
            <Stack.Screen name="Home" component={Tabs} />
            <Stack.Screen name="LogInSignUp" component={LogInSignUp}/>
          </Stack.Navigator>
        </NavigationContainer>
    );
};

export default App;

4. 确认Tabs导航的嵌套逻辑

确保你的Tabs组件已正确配置Settings页面的路由,这样Settings页面才能继承栈导航的navigation上下文,实现页面跳转。

验证修复

完成以上修改后,点击Settings页面的按钮即可正常跳转到LogInSignUp页面,不会再出现undefined is not a function报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 21:57:53