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

React Navigation报错:Undefined is not an object,登录页跳转主页失败

解决React Navigation中Undefined is not an object evaluating (_this.props.navigation.navigate())错误

问题回顾

你遇到的情况是:点击登录按钮后alert弹窗正常弹出,但调用this.props.navigation.navigate('Tabs')时触发了Undefined is not an object evaluating (_this.props.navigation.navigate())错误,Login组件和路由配置代码已经提供。

问题根源

从你的代码来看,路由配置AppNavigation本身是正确的,但最大的可能性是你没有将AppNavigation作为应用的根组件来渲染。React Navigation的navigation props只会自动注入到被导航器直接包裹的组件中,如果你的入口文件直接渲染了<Login />而不是<AppNavigation />,Login组件就无法获取到navigation这个props,自然会报错。

另外,你的login方法用了箭头函数,this的指向是正确的(alert能正常触发也证明了这一点),所以排除this绑定的问题。

解决方案

1. 将AppNavigation设置为应用根组件

找到你的应用入口文件(通常是App.js或者index.js),把原来直接渲染Login组件的代码,改成渲染AppNavigation:

import React, { Component } from 'react';
// 替换成你的Router.js实际路径
import { AppNavigation } from './src/Router'; 

export default class App extends Component {
  render() {
    // 这里要渲染AppNavigation,而不是<Login />
    return <AppNavigation />;
  }
}

这样Login组件作为AppNavigation中定义的LoginScreen路由对应的页面,就会自动被注入navigation props,调用navigate方法就不会报错了。

2. 额外验证(可选)

如果修改根组件后还是有问题,可以在Login组件的render方法里添加日志,确认navigation props是否被正确注入:

render (){
  console.log('当前navigation props:', this.props.navigation);
  return (
    // 原组件内容
  );
}

如果控制台打印出undefined,那说明你的Login组件还是没有被导航器正确包裹;如果打印出包含navigate等方法的对象,那再检查navigate的目标路由名称是否正确(你的代码里目标是Tabs,路由配置里确实存在,所以这个是对的)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:42:49