gpt4 book ai didi

react-native - react 导航,获取嵌套路线的名称

转载 作者:行者123 更新时间:2023-12-05 00:46:06 25 4
gpt4 key购买 nike

我在下面有一个嵌套的抽屉导航器,我在标题中使用了一个自定义组件:

header: props => {
return <DrawerHeader {...props} />;
},

当我尝试从 props 访问标题中的当前路由时,如下所示,标题为 undefined,如何获取当前路由?

  render() {
const {
navigation,
videos,
search: {term},
scene: {
route: {routeName: title}, // undefined
},
} = this.props;
return (
<View>
<View style={styles.container}>

导航器:

function DrawerStack() {
return (
<Drawer.Navigator>
<Drawer.Screen
name="VideoEpisodesScreen"
component={VideoEpisodesScreen}
/>
<Drawer.Screen name="TestYourselfScreen" component={TestYourselfScreen} />
<Drawer.Screen name="MyResultsScreen" component={MyResultsScreen} />
<Drawer.Screen name="AboutScreen" component={AboutScreen} />
<Drawer.Screen name="TestsScreen" component={TestsScreen} />
<Drawer.Screen
name="BookmarkedVideosScreen"
component={BookmarkedVideosScreen}
/>
</Drawer.Navigator>
);
}

export default function AppNavigator() {
return (
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen
name="Home"
component={HomeScreen}
options={stackOptions}
/>
<Stack.Screen
name="Drawer"
component={DrawerStack}
options={drawerOptions}
/>
<Stack.Screen
name="MyResultsScreen"
component={MyResultsScreen}
options={options}
/>
</Stack.Navigator>
</NavigationContainer>
);
}

最佳答案

有趣的是,我遇到了完全相同的问题,而我在一个小时后发现了您的问题。本质上,问题在于 React Navigation 只会为您提供包含标题的导航器的当前路线。如果你有一个嵌套的导航器,你将无法得到它。

看起来这有点故意,但我发现通过手动查询导航器的状态,您可以深入到“最深”的导航器路线。请注意,虽然这适用于 react-navigation 5,但将来可能无法使用。

您可以像这样迭代查询嵌套状态:

const state = navigation.dangerouslyGetState();
let actualRoute = state.routes[state.index];

while (actualRoute.state) {
actualRoute = actualRoute.state.routes[actualRoute.state.index];
}

请注意,这是非常脆弱的,但它似乎对我的用例来说足够好。您应该考虑在 react-navigation 存储库上创建问题/功能请求,以正式支持此用例。

关于react-native - react 导航,获取嵌套路线的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61935194/

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