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

React Native添加+按钮跳转报错:NAVIGATE动作未被处理

问题解决:React Native导航错误与按钮布局调整

问题概述

在React Native项目中,尝试在StorageListScreen页面右下角添加+按钮,点击后跳转到包含两个输入字段的StorageScreen表单页面,但点击按钮时触发导航错误。

错误信息

ERROR  The action 'NAVIGATE' with payload {"name":"StorageScreen"} was not handled by any navigator.

Do you have a screen named 'StorageScreen'?

If you're trying to navigate to a screen in a nested navigator, see https://reactnavigation.org/docs/nesting-navigators#navigating-to-a-screen-in-a-nested-navigator.

解决步骤

1. 修复导航错误

错误核心是StorageScreen未在导航器中注册。当前底部导航器直接挂载StorageListScreen,需为其嵌套栈导航器,将StorageScreen加入导航栈。

修改底部导航器代码(AppNavigator.js):

import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import HomeScreen from '../screens/HomeScreen';
import YourFood from '../screens/YourFood';
import StorageListScreen from '../screens/StorageListScreen';
import StorageScreen from '../screens/StorageScreen';
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';

const Tab = createBottomTabNavigator();
const StorageStack = createNativeStackNavigator();

// 定义Storage专属栈导航
function StorageStackScreen() {
  return (
    <StorageStack.Navigator>
      <StorageStack.Screen 
        name="StorageList" 
        component={StorageListScreen}
        options={{ title: "List of Storages" }}
      />
      <StorageStack.Screen 
        name="StorageScreen" 
        component={StorageScreen}
        options={{ title: "Add Storage" }}
      />
    </StorageStack.Navigator>
  );
}

function MyTabs() {
  return (
    <Tab.Navigator>
      <Tab.Screen
        name="Home"
        component={HomeScreen}
        options={{
          tabBarLabel: 'Home',
          tabBarIcon: ({ color, size }) => (
            <MaterialCommunityIcons name="home" color={color} size={size} />
          ),
        }}
      />
      <Tab.Screen
        name="Storage"
        component={StorageStackScreen}
        options={{
          tabBarLabel: 'Storage',
          tabBarIcon: ({ color, size }) => (
            <MaterialCommunityIcons name="fridge-variant" color={color} size={size} />
          ),
        }}
      />
      <Tab.Screen
        name="Your Food"
        component={YourFood}
        options={{
          tabBarLabel: 'Food',
          tabBarIcon: ({ color, size }) => (
            <MaterialCommunityIcons name="food-variant" color={color} size={size} />
          ),
        }}
      />
    </Tab.Navigator>
  );
}
export default MyTabs;

2. 调整按钮到页面右下角

修改StorageListScreen.js,通过绝对定位将按钮固定在右下角,同时移除冗余的导航器导入:

import React from 'react';
import { View, Text, Button, StyleSheet } from 'react-native';
import StorageScreen from './StorageScreen';

const StorageListScreen = ({ navigation }) => {
  return (
    <View style={styles.container}>
      <Text style={styles.header}>List of Storages</Text>

      {/* 存储列表展示区域 */}

      <View style={styles.addButtonContainer}>
        <Button
          title="+"
          onPress={() => navigation.navigate('StorageScreen')}
        />
      </View>
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    padding: 16,
  },
  header: {
    fontSize: 20,
    fontWeight: 'bold',
    marginBottom: 16,
  },
  addButtonContainer: {
    position: 'absolute',
    bottom: 30,
    right: 30,
  }
});

export default StorageListScreen;

说明

  • 嵌套栈导航后,StorageListScreen可通过navigation.navigate('StorageScreen')正确跳转目标页面
  • 绝对定位样式确保按钮固定在页面右下角,不受内容滚动影响

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:50:53