gpt4 book ai didi

react-native - 嵌套选项卡导航器中的React Navigation header 标题

转载 作者:行者123 更新时间:2023-12-03 09:31:14 27 4
gpt4 key购买 nike

我在Stack Navigator中有一个Tab Navigator,并且我希望将标题动态配置为所选标签的标题。就像这里有3个标签一样:“主页”,“配置文件”,“添加项目”,我希望在首页标签中标题标题为“主页”,在个人资料标签中标题标题为“个人资料”。

我尝试在根导航器上使用onStateChange,在选项卡导航器上使用setOptions,但onStateChange仅在而不是在嵌套导航器中可用。

无论如何,我可以将其归档吗?

导航器配置为:

const TabNav = (
<Tab.Navigator>
<Tab.Screen name='Home' component={HomeScreen}/>
<Tab.Screen name='Profile' component={ProfileScreen}/>
<Tab.Screen name='Add Item' component={AddItemScreen}/>
</Tab.Navigator>
)

<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name='Login' component={LoginScreen}/>
<Stack.Screen name='App' component={TabNav}/>
</Stack.Navigator>
</NavigationContainer>

最佳答案

我在react-navigation v5中具有类似的导航层次结构,我想在嵌套的TabNavigator中的 View 内更改页眉标题。我终于通过使用dangerouslyGetParent()获取StackNavigator的父导航项,然后使用setOptions()来实现了它。

因此,这是TabNav内部三个 View 之一的最小代码:

import React, {useCallback} from 'react';
import { useNavigation, useFocusEffect } from '@react-navigation/native';

const HomeScreen = (props) => {

// TabNav navigation item
const navigation = useNavigation();

// Effect will be triggered everytime the Tab changes
// Mounting is not enough -> Tabs will not be unmount by change
useFocusEffect(
useCallback(() => {

// Get StackNav navigation item
const stackNavigator = navigation.dangerouslyGetParent();
if(stackNavigator){

// Actually set Title
stackNavigator.setOptions({
title: "Home"
});
}
}, [navigation])
);
return (
/* Component Items */
);
};

关于react-native - 嵌套选项卡导航器中的React Navigation header 标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60363195/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com