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

React Native导航错误:NAVIGATE至HomeScreen未被导航器处理

问题原因
  1. 登录操作触发时,isAuthenticated仍为false,当前活跃的导航栈仅包含SignInScreen,不存在HomeScreen路由,因此navigate('HomeScreen')找不到对应目标。
  2. 你的导航结构是通过条件渲染切换整个导航容器内容,而非在同一个栈内跳转,直接调用navigate无法触发导航容器的切换逻辑。
修复方案

步骤1:在RootNavigator中传递状态更新函数给登录页面

修改RootNavigator中登录栈的Stack.Screen,通过initialParams把setIsAuthenticated传递给SignInScreen:

<Stack.Navigator>
  <Stack.Screen 
    name="SignInScreen" 
    component={SignInScreen} 
    initialParams={{ setIsAuthenticated }} // 新增此行
  />
</Stack.Navigator>

步骤2:修改登录页面的登录逻辑

在SignInScreen中接收setIsAuthenticated,并在登录成功后更新状态,替换原有的navigate调用:

// 先获取路由参数
const { route } = useNavigation();
const { setIsAuthenticated } = route.params;

const handleSignInPress = () => {
  if (emailError || passwordError) {
    return;
  }
  // 替换navigate,改为更新认证状态
  setIsAuthenticated(true);
};

步骤3(可选):修复HomeScreen的props警告

你的HomeScreen定义了targetDate属性但未使用,也没有接收该参数,可删除无用的接口定义避免警告:

// 删除以下两行
interface HomeScreenProps {
  targetDate: Date;
}
// 修改组件定义为
const HomeScreen: React.FC = () => {
  // ... 原有逻辑
};
原理说明

当isAuthenticated变为true时,RootNavigator会自动切换渲染底部标签导航,标签导航默认加载第一个标签页(即HomeStack),而HomeStack的默认页面就是HomeScreen,这样就能正确进入首页,无需手动调用navigate。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:47:10