“应该有一个队列。这很可能是 React 中的一个错误。请提出问题。” React-Native bug

nig*_*mbo 7 javascript react-native react-native-ios react-native-navigation react-hooks

我在当前正在开发的 React-Native 应用程序的标题中收到错误。

我已经进行了数小时的故障排除,但网上似乎没有解决方案。

根据我收集的信息,以下钩子const [isOpen, setIsOpen] = useState(false);导致了这里的问题,可能是由于钩子的顺序所致。该挂钩用于切换我自定义构建的菜单。但是,当我尝试导航到另一个屏幕<TouchableOpacity onPress={() => navigation.navigate('Job')}>(从屏幕堆栈,而不是从模式或卡片)时,应用程序崩溃并收到错误。如果我注释掉 hook 的一行钩子const [isOpen, setIsOpen] = useState(false);,导航就会完美地工作。

如果有解决方案,我们将不胜感激。

配置文件

export const sharedScreenOptions = (props) => {
  const [isOpen, setIsOpen] = useState(false);

  const toggleMenu = () => {
    setIsOpen(!isOpen);
    LayoutAnimation.easeInEaseOut();
  };
  return {
    headerBackTitleVisible: false,

    header: (props) => {
      return (
        <>
          <GradientHeader isOpen={isOpen} {...props} />
          {isOpen ? (
            <TouchableOpacity
              style={{
                height: Dimensions.get('window').height,
                width: Dimensions.get('window').width,
                backgroundColor: 'rgba(42, 44, 65, 0.5)',
                position: 'absolute',
                zIndex: -999,
              }}
              onPress={() => toggleMenu()}></TouchableOpacity>
          ) : null}
        </>
      );
    },
    headerRight: () => {
      return (
        <View style={styles.iconContainer}>
          <TouchableOpacity onPress={() => navigation.navigate('Job')}>
            <MailButton navigation={props.navigation} />
          </TouchableOpacity>
          <NotificationButton navigation={props.navigation} />
          <TouchableOpacity onPress={() => toggleMenu()}>
            {isOpen ? <CloseButton /> : <HamburgerButton />}
          </TouchableOpacity>
        </View>
      );
    },
    headerStyle: {
      backgroundColor: 'transparent',
    },
  };
};
Run Code Online (Sandbox Code Playgroud)

导航.js

const JobboardStack = createStackNavigator();
const JobboardStackScreens = () => {
  return (
    <JobboardStack.Navigator
      initialRouteName="Jobboard"
      screenOptions={sharedScreenOptions}>
      <JobboardStack.Screen
        name="JobBoard"
        component={JobboardScreen}
        options={{
          headerTintColor: '#FFFFFF',
          headerTitleStyle: {
            fontFamily: 'Raleway-Regular',
            fontWeight: '500',
            opacity: 0,
          },
        }}
      />
      <JobboardStack.Screen
        name="Job"
        component={JobScreen}
        options={{
          headerTintColor: '#FBF7EF',
        }}
      />
    </JobboardStack.Navigator>
  );
};
Run Code Online (Sandbox Code Playgroud)