【问题标题】:"Maximum update depth exceeded" when making custom drawer in Drawer Navigator在抽屉导航器中制作自定义抽屉时“超出最大更新深度”
【发布时间】:2020-11-23 02:47:12
【问题描述】:

在获取自定义抽屉以定位我的堆栈屏幕时遇到此问题:超出最大更新深度。当组件在 componentWillUpdate 或 componentDidUpdate 中重复调用 setState 时,可能会发生这种情况。 (我根本没有使用类组件,所以我不知道是什么原因造成的。)

主要组件:

import "react-native-gesture-handler";
import React from "react";
import { NavigationContainer } from "@react-navigation/native";
import { createStackNavigator } from "@react-navigation/stack";
import { createDrawerNavigator } from "@react-navigation/drawer";
import Header from "./components/Header";
import NavigationDrawer from "./components/NavigationDrawer";
import Home from "./components/Home";
import Login from "./components/Login";
import Signup from "./components/Signup";
import GameNotes from "./components/GameNotes";
const Stack = createStackNavigator();
const Drawer = createDrawerNavigator();
function StackNavigator() {
    return (
        <Stack.Navigator initialRouteName="Main" screenOptions={{ header: Header }}>
            <Stack.Screen name="Main" component={Home} />
            <Stack.Screen name="Login" component={Login} />
            <Stack.Screen name="Signup" component={Signup} />
        </Stack.Navigator>
    );
}
export default function ComponentContainer() {
    return (
        <NavigationContainer>
            <Drawer.Navigator
                initialRouteName="Stack"
                drawerContent={(props) => <NavigationDrawer {...props} />}
            >
                <Drawer.Screen name="Stack" component={StackNavigator} />
                <Drawer.Screen name="GameNotes" component={GameNotes} />
            </Drawer.Navigator>
        </NavigationContainer>
    );
}

NavigationDrawer 组件:

import React, { useContext } from "react";
import { DrawerContentScrollView, DrawerItem } from "@react-navigation/drawer";
import { UserContext } from "../contexts/UserContext";
import { LanguageContext } from "../contexts/LanguageContext";
import localeSelect from "../services/localeSelect";
import { login } from "../data/locales";

export default function NavigationDrawer({ navigation }) {
    const { user } = useContext(UserContext);
    const { language } = useContext(LanguageContext);
    return (
        <DrawerContentScrollView>
            {!user && (
                <>
                    <DrawerItem
                        label={localeSelect(language, login)}
                        onPress={navigation.navigate("Stack", { screen: "Login" })}
                    />
                </>
            )}
        </DrawerContentScrollView>
    );
}

【问题讨论】:

  • 下面的答案解决了你的问题吗?

标签: react-native react-navigation react-navigation-stack react-navigation-drawer


【解决方案1】:

改变这个:navigation.navigate("Stack", { screen: "Login" })

收件人:() =&gt; navigation.navigate("Stack", { screen: "Login" })

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 2020-06-29
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多