reactjs - 如何动态更改 React Native 堆栈导航屏幕的标题?
问题描述
我正在为 React Native 应用程序使用堆栈导航,并且我想在您从另一个屏幕转到屏幕时动态更改屏幕的标题。
我的导航设置如下App.js
:
const navigator = createStackNavigator({
Home: HomeScreen,
ResultDetails: ResultDetailsScreen
}, {
initialRouteName: 'Home',
defaultNavigationOptions: {
title: 'App Name'
}
});
在 上HomeScreen
,我有一个链接到如下FlatList
的TouchableOpacity
元素:ResultDetailsScreen
<FlatList
data={results}
keyExtractor={ (result) => result.id }
renderItem={ ({ item }) => {
return (
<TouchableOpacity
onPress={ () => navigation.navigate('ResultDetails', item) }
>
<Text>{ item.name }</Text>
</TouchableOpacity>
);
} }
/>
item
我要发送到的有ResultDetailsScreen
和id
属性name
。
如何获取并动态设置堆栈导航标题的name
属性?我已经查看了关于 SO 等的相关主题,但我似乎无法让它发挥作用。item
ResultDetailsScreen
我已经看到了一些关于可能使用以下内容的内容:
navigation.setParams({
title: 'New Title'
});
New Title
但是当我这样做时,我在上看不到ResultDetailsScreen
,并且无论出于何种原因,我都无法再返回应用程序。
最后,如果它有所作为,我使用的是函数和钩子,而不是我的 React Native 代码的类。
解决方案
您必须创建一个静态函数,您必须在其中设置动态名称
static navigationOptions = ({ navigation }) => {
navOptions = navigation
return {
title: 'Notification',
}
}
推荐阅读
- youtube-api - Youtube 品牌帐户不能使用内部 youtube API 客户端
- mysql - 我正在尝试使用以下代码从 NodeJS 连接到 Google 云 SQL 实例
- python - 如何将 .png 文件从我的 python 应用程序发送到 google dialogflow webhook
- android - 与 Android Studio 的拖动编辑兼容的自定义布局?
- javascript - 为什么我可以在一个函数中访问我的合约,但不能在另一个函数中访问我的合约
- c++ - C ++如何从向量列表中选择一个随机变量?
- swift - TVDigitEntryViewController - 只能选择第一个数字
- salesforce - 我们可以在联系人上显示帐户记录吗?
- ios - MacOS 应用程序验证 App Store:与 iOS 应用程序兼容的配置文件有问题
- java - 未找到产品名称的数据库类型:[Tibero]