首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应导航的反应本机,而不是导航-任何遗漏?

反应导航的反应本机,而不是导航-任何遗漏?
EN

Stack Overflow用户
提问于 2022-05-05 22:57:26
回答 2查看 594关注 0票数 0

这是我第一次尝试使用react导航,而且我第一次没有让它工作。我创建了另一个名为“First”的屏幕,并声明如下:

types.tsx:

代码语言:javascript
复制
export type RootStackParamList = {
  Root: NavigatorScreenParams<RootTabParamList> | undefined;
  Modal: undefined;
  NotFound: undefined;
  First: undefined;
};

导航/索引.

代码语言:javascript
复制
import { FontAwesome } from '@expo/vector-icons';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
import { NavigationContainer, DefaultTheme, DarkTheme } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import * as React from 'react';
import { ColorSchemeName, Pressable } from 'react-native';

import Colors from '../constants/Colors';
import useColorScheme from '../hooks/useColorScheme';
import ModalScreen from '../screens/ModalScreen';
import NotFoundScreen from '../screens/NotFoundScreen';
import TabOneScreen from '../screens/TabOneScreen';
import TabTwoScreen from '../screens/TabTwoScreen';
import First from '../screens/FirstScreen'

import { RootStackParamList, RootTabParamList, RootTabScreenProps } from '../types';
import LinkingConfiguration from './LinkingConfiguration';

function RootNavigator() {
  return (
    <Stack.Navigator>
      <Stack.Screen name="First" component={First} options={{ headerShown: false}} />
      <Stack.Screen name="Root" component={BottomTabNavigator} options={{ headerShown: false }} />
      <Stack.Screen name="NotFound" component={NotFoundScreen} options={{ title: 'Oops!' }} />
      <Stack.Group screenOptions={{ presentation: 'modal' }}>
        <Stack.Screen name="Modal" component={ModalScreen} />
      </Stack.Group>
    </Stack.Navigator>
  );
}

导航/LinkingConfiguration.ts:

代码语言:javascript
复制
import { LinkingOptions } from '@react-navigation/native';
import * as Linking from 'expo-linking';

import { RootStackParamList } from '../types';

const linking: LinkingOptions<RootStackParamList> = {
  prefixes: [Linking.makeUrl('/')],
  config: {
    screens: {
      Root: {
        screens: {
          TabOne: {
            screens: {
              TabOneScreen: 'one',
            },
          },
          TabTwo: {
            screens: {
              TabTwoScreen: 'two',
            },
          },
        },
      },
      Modal: 'modal',
      NotFound: '*',
      First: 'first'
    },
  },
};

export default linking;

这就是我试图导航的方式:

屏幕/FirstScreen.tsx:

代码语言:javascript
复制
import { useRef, useEffect } from 'react'
import { StatusBar } from 'expo-status-bar';
import { Platform, StyleSheet, Image, Button, Animated, TouchableOpacity } from 'react-native';

import FadeInShrinkView from '../components/FadeInShrinkView';
import Touchable01 from '../components/Touchable01';
import { Text, View } from '../components/Themed';
import Navigation from '../navigation';
import { NavigationContainerRefContext, useNavigation } from '@react-navigation/native';
import { RootStackScreenProps } from '../types';

export default function First() {
  const navigation = useNavigation()

  return (
    <View style={styles.container}>
        <Touchable01
          title='Go Now'
          onTouch={()=>  navigation.navigate('Root')  }
        /> 
    </View>
)
} 

在Expo中进行测试时,它不会导航到根选项卡。我是不是做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-12 17:33:55

我仍然不知道为什么,但问题是我的组件Touchable01。由于任何原因,触摸并没有触发“导航”,我不确定它是否希望它来自一个按钮组件。

不管怎样,改变它会让它发挥作用。

谢谢大家!

票数 0
EN

Stack Overflow用户

发布于 2022-05-06 04:36:37

我不确定我完全理解你的情况。但我以前也遇到过类似的事。试试这个,如果有用请告诉我。

这是导航到'TabOneScreen

代码语言:javascript
复制
navigation.navigate('Root', {
    screen: 'TabOne',
    params: {
        screen: 'TabOneScreen',
      },
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72134419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档