Thi*_*nto 10 react-native react-navigation react-navigation-stack
我在 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>
Run Code Online (Sandbox Code Playgroud)
我有一个与react-navigationv5类似的导航层次结构,我想在嵌套的 TabNavigator 中更改视图内的标题标题。我最终通过获取 StackNavigator 的父导航项dangerouslyGetParent()然后使用setOptions().
因此,这是 TabNav 中三个视图之一的最小代码:
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 */
);
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2279 次 |
| 最近记录: |