react-native - 屏幕上的动态标题更改
问题描述
我有一个导航代码:
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name='Home' component={Home} options={{ headerShown: false }} />
<Stack.Screen name='Learning' component={Learning}
options={{
headerTransparent: true,
title: 'Learning',
headerTitleAlign: 'center',
}} />
</Stack.Navigator>
</NavigationContainer>
我将学习屏幕用于两个功能应用程序屏幕:
- 一种
- 乙
在屏幕 A 上,我有两个按钮:
<TouchableOpacity onPress={() => navigation.navigate('Learning', { screen: 'Learning' })}/>
<TouchableOpacity onPress={() => navigation.navigate('Learning', { screen: 'Repeats' })}/>
根据此内容,{screen: 'Learning'}
正在加载一些其他数据
这个屏幕有一个标题
你如何让它根据你点击的按钮加载不同的标题?
我找不到解决方案如何为基于函数和挂钩的组件执行此操作
解决方案
options
prop 可以接受一个函数并{route, navigation}
为您提供对象作为参数,因此要在标头中使用,params
您可以这样做:
<Stack.Screen
name="Learning"
component={Learning}
options={({ route }) => ({ title: route.params.screen })}
/>
我不确定在这种情况下功能组件和钩子有什么区别,但如果我误解了这个问题,您可以在功能组件中使用useNavigation
和useRoute
钩子,并执行您在类中执行的相同操作。
推荐阅读
- c# - 将事件作为参数传递的正确方法是什么?
- python - 如何将复制分组为 Pandas 数据框中的列
- java - 删除不更新 JPanel/JFrame 的组件
- python - 在字典的值中编辑列表中的每个元素(Python)
- algorithm - 对于给定的数字范围,用 1-2-5-ticks 标记坐标轴
- python - 在没有 NVIDIA GPU 的情况下导入 Tensorflow(ImportError: 找不到 'nvcuda.dll')
- xamarin.android - 更新自定义 listviewAdapter
- javascript - JQuery 取消合并表行并填充值
- javascript - 如何在过滤器方法中验证属性是否为空
- c# - 调试和发布构建之间的 WPF 应用程序布局差异