一个易于使用的导航解决方案,可用于React和React Native项目https://reactnavigation.org
React-Navigation Push 取代了之前的屏幕数据
我正在使用navigation.push导航到具有不同参数的同一屏幕,它用最近推送的屏幕替换以前的所有屏幕数据 我的堆栈根 我使用 navigation.push 导航到具有不同参数的同一屏幕,它用最近推送的屏幕替换以前的所有屏幕数据 我的堆栈根 <Stack.Screen name='ViewProduct' component={ViewProduct} options={({ navigation, route }) => ({ headerTitle: props => <Text style={{fontSize:16,fontWeight:'bold'}}>Product Details</Text>, })} /> 我的产品查看屏幕 <TouchableOpacity delayPressIn={500} onPress={() => props.navigation.dispatch(StackActions.push('ViewProduct',{"uid":item.uid}))}> <View> <Image style={styles.prodImage} source={{uri:IMG_URL+'/images'+item.image_base_path+item.image_variant+'/m/'+item.cover_image}}/> </View> </TouchableOpacity> 需要的方法 In navigation.push product-1 >> product-2 >> product-3 >> product-4 In goback product-1 << product-2 << product-3 << product-4 当前问题 In navigation.push product-1 >> product-2 >> product-3 >> product-4 In goback product-4 << product-4 << product-4 << product-4 你必须使用navigation.navigate('yourscreen')。这会产生您的预期输出。如下所述使用。 => this.props.navigation.navigate('FirstScreen); => this.props.navigation.navigate('SecondScreen'); => this.props.navigation.navigate('ThirdScreen'); 不要使用任何push()或dispatch()方法。如果是基于类的导航,请使用以下方法。 示例: this.props.navigation.navigate('DetailsScreen'); 如果是功能组件,则从@react-navigation/native导入useNavigation道具。请看下面的例子。 示例: import * as React from 'react'; import { Button } from 'react-native'; import { useNavigation } from '@react-navigation/native'; function GoToButton({ screenName }) { const navigation = useNavigation(); return ( <Button title={`Go to ${screenName}`} onPress={() => navigation.navigate(screenName)} /> ); } 您应该使用在堆栈上添加导航 navigation.push(ScreenName.MEMBERPROFILE, { id: item.personId, }); 一旦添加到堆栈中,id 将在同一屏幕上传递 import { useNavigationState } from '@react-navigation/native'; const routes = useNavigationState((state) => { return state.routes; }); const paramsList = routes.map((e) => { return e?.params; }); const lastID = paramsList[paramsList.length - 1]; 每当我们按下同一屏幕时,您都会收到来自路线的所有参数。 现在您可以从堆栈中获取最后的 prams 值,传递给 API 并刷新 API useEffect(() => { // Set navigation options dispatch(getPersonDirectoryRequest({ personId: lastID?.id })); // Update localId whenever route params change }, [dispatch, id, navigation, lastID]);
react-navigation 的奇怪行为。 (反应本机)
我正在使用 React Native 制作应用程序。 我有一个 tabNavigator。 如果我转到第二个选项卡并按顶部导航栏上的后退按钮,它将转到第一个选项卡,而不是返回到上一个屏幕。 我...
如何防止重新渲染导致应用程序在上一个屏幕的状态更新时自动返回到上一个屏幕?
我正在开发一个反应本机应用程序,其中一个屏幕显示用户列表,另一个屏幕显示消息列表。当用户单击其中一位用户时,他们会转到消息屏幕。在
在我的React-Native应用程序中使用react-i18next时,启动应用程序时一切正常。每个标签都会翻译成应用程序中保存的语言。 当我去我的
如何禁用在 Drawer.Screen 内右上角滑动时显示抽屉内容
我正在使用@react-navigation/drawer的抽屉导航器。我也添加了抽屉内容。默认情况下,它的标题是不可见的。 我正在使用@react-navigation/drawer的抽屉导航器。我也添加了抽屉内容。默认情况下,它的标题是不可见的。 <Drawer.Navigator screenOptions={{headerShown: false, drawerPosition: 'right'}} drawerContent={MYCUSTOM_COMPONENT}> <Drawer.Screen component={SAMPLE_SCREEN}/> </Drawer.Navigator> SAMPLE_SCREEN 有一些内容。当用户滑动屏幕右上角时,抽屉内容就会弹出。 SAMPLE_SCREEN 是否有任何选项可以停止此默认行为? 在屏幕级别添加 swipeEnabled 选项解决了该问题。此选项在导航器级别也可用。它将禁用所有屏幕上的滑动。 <Drawer.Navigator screenOptions={{headerShown: false, drawerPosition: 'right'}} drawerContent={MYCUSTOM_COMPONENT}> <Drawer.Screen component={SAMPLE_SCREEN} options={{ swipeEnabled: false }}/> </Drawer.Navigator>
堆叠式 React Navigator 会导致组件实例化时 API 被调用 2 次
我是 React Native 的新手,我有一个使用堆栈和选项卡导航器的应用程序。堆栈导航器是选项卡导航器的子导航器。问题在于,当屏幕同时使用它们时,ca...
使用 headerMode float 的反应导航自定义标头会在导航上产生跳转/故障
我在反应导航中设置了一个自定义标题。然而,在屏幕之间导航时,它似乎会轻微闪烁和故障。 这种情况有点间歇性,但大约 70% 的时间都会发生。 T...
这里我使用react-navigation作为我的导航库。 如何更改特定屏幕的后退按钮(通过反应导航自动添加)功能? 我的意思是而不是 g...
我只是想从顶部提供更多的填充/边距或添加一些高度。我尝试了 headerStyle: height 但它不起作用。边距填充也不起作用。我也在用v6 “依赖关系”...
我正在尝试更改 React-Native Stack Navigator 中的标题栏高度 这是我的代码 我尝试输入 headerStyle: height:'100',但它不起作用 我应该怎么办? const LoginNavigator = () =...
TransitionPresets 不起作用。反应导航版本 6
我最近从 v4 升级到 v6。 结果,TransitionPresets 似乎停止工作了。 我最近从 v4 升级到 v6。 结果,TransitionPresets 似乎停止工作了。 <Stack.Screen name="Home" component={Home} options={{ ...TransitionPresets.ModalSlideFromBottomIOS }} /> 我不认为它的使用方法有什么错误。 https://reactnavigation.org/docs/stack-navigator/#transitionpresets 还有其他人遇到过类似的问题吗? 编辑2021-11-17 对不起。 我想我不明白本机堆栈和堆栈之间的区别。 我使用了普通堆栈并且它有效。 在导航 v6 中 <Stack.Navigator screenOptions={{ animation: 'fade_from_bottom', }}> </Stack.Navigator> 动画选项应该是: StackAnimationTypes = 'default' | 'fade' | 'fade_from_bottom' | 'flip' | 'none' | 'simple_push' | 'slide_from_bottom' | 'slide_from_right' | 'slide_from_left' 我遇到了同样的问题,当切换版本并编辑 Stack 的编写方式时,我注意到它们重定向到不同的库。 更改自: import { createNativeStackNavigator, TransitionPresets } from '@react-navigation/native-stack'; 对于: import { createStackNavigator, TransitionPresets, } from '@react-navigation/stack'; 并且在创建堆栈时也进行了编辑: const Stack = createNativeStackNavigator(); 对于: const Stack = createStackNavigator(); 您需要在 Stack.Navigator 的 screenOptions 属性中添加 TransitionPresets。只需按如下方式输入即可。 <Stack.Navigator screenOptions={{...TransitionPresets.SlideFromRightIOS}}> <Stack.Screen name="screenName" component={screenComponent} /> </Stack.Navigator> 在谷歌搜索中发现了这个并解决了相关问题,所以我想我会发布并分享以防其他人可能会发现它有用。我发现卡片演示模式在 "@react-navigation/native-stack": "^6.9.22"; 和 fade_from_bottom 中导航时存在相当严重的帧/屏幕重影问题,这似乎是解决方案,但这些演示并未在本机堆栈中正式记录。 <NativeStack.Navigator initialRouteName={homeScreenString} screenOptions={({ route }: { route: RouteProp<ParamListBase> }) => ({ ... presentation: 'fade_from_bottom' })}> <NativeStack.Screen ... /> <NativeStack.Screen ... /> </NativeStack.Navigator>
如何使用 @react-navigation/native 和 @react-navigation/native-stack 消除导航上的白色闪烁
每当我导航到另一个屏幕时,屏幕都会闪烁白色,因为导航到的屏幕似乎淡入。我将应用程序构建为具有浅色和深色模式;这对于轻量级来说就很好了...
React Native“Material Top Tabs Navigator”中的动态组件创建
目前我正在开发一个新闻应用程序,我必须在其中显示类别明智的新闻列表。这些类别是动态的并且从 API 中获取(例如健康、体育、旅行、技术等)。 我正在使用伴侣...
在 React Native Expo 抽屉布局中导航到嵌套屏幕时如何在标题中显示后退按钮?
我正在努力弄清楚如何在使用 expo-router/drawer 导航到抽屉布局中的嵌套屏幕时自动在标题中显示后退按钮。我知道这适用于 Stack l...
我想通过react-native将Stacks放入Modal中。 我尝试将堆栈导航器放在模态中,但我无法按可按元素,例如 TouchableOpacity 或 Pressable 等... 附:如果没有办法的话...
反应本机 MaterialCommunityIcons 在顶部选项卡导航器版本 5 中不起作用
顶部选项卡导航工作正常,但图标不显示,仅显示屏幕名称,我正在使用react-navigation版本5,如果不是materialcommunityicons,则可以使用其他替代方案...
我为标题标题(堆栈导航器)制作了一个自定义组件,它显示用户名和一些图像。 在此页面上,我必须编辑用户名,并在成功后在标题中更新它 所以我的
我正在使用带有导航的 React Native。我没有注意到,但突然后退按钮在整个应用程序中不起作用。左侧的标题后退按钮工作绝对正常,但是,硬件......
[布局子项]:嵌套子项中不存在名为“/users/[id]”的路由:[“index”,“users/[id]”] Expo Router
我正在学习Expo Router,并尝试实现选项卡,但出现以下错误。 项目目录 应用程序/ (选项卡)/ 用户/ [id].jsx _layout.jsx 索引.jsx 索引....