reactjs - 如何动态更改 React Native 堆栈导航屏幕的标题?

我正在为 React Native 应用程序使用堆栈导航,我想在您从另一个屏幕转到某个屏幕时动态更改该屏幕的标题。

我的导航在App.js中设置如下:

const navigator = createStackNavigator({
    Home: HomeScreen,
    ResultDetails: ResultDetailsScreen
}, {
    initialRouteName: 'Home',
    defaultNavigationOptions: {
        title: 'App Name'
    }
});

HomeScreen 上,我有一个包含 TouchableOpacity 元素的 FlatList,它链接到 ResultDetailsS​​creen,如下所示:

<FlatList
    data={results}
    keyExtractor={ (result) => result.id }
    renderItem={ ({ item }) => {
        return (
            <TouchableOpacity
                onPress={ () => navigation.navigate('ResultDetails', item) }
            >
                <Text>{ item.name }</Text>
            </TouchableOpacity>
        );
    } }
/>

我发送到 ResultDetailsS​​creenitem 具有 idname 属性。

如何获取 itemname 属性并为 ResultDetailsS​​creen 上的堆栈导航标题动态设置该属性?我查看了有关 SO 等的相关主题,但我似乎无法让它发挥作用。

我看过一些关于可能使用以下内容的内容:

navigation.setParams({
    title: 'New Title'
});

但是当我这样做时,我在 ResultDetailsS​​creen 上看不到 New Title,并且无论出于何种原因,我都无法再返回应用程序。

最后,如果它有所不同,我正在使用函数和钩子(Hook),而不是我的 React Native 代码的类。

最佳答案

你必须创建一个静态函数,你必须在其中设置动态名称的屏幕

 static navigationOptions = ({ navigation }) => {
        navOptions = navigation
        return {
            title: 'Notification',
        }
    }

https://stackoverflow.com/questions/57981825/

相关文章:

spring - 如何在没有 Spring Security 或 Spring Boot 的情况下禁

android-management-api - Google Pixel 设备在发出重启命令后重启

c# - 如何在 ConfigureServices 方法中使用 ASP.NET Core 2.1

reactjs - React - 组件在重新渲染后不更新

node.js - 将参数/通配符定义为 npm 脚本键/名称的一部分

firebase - 是否可以为不活动实现自动注销功能?

database - 使用扇出写入方法根据隐私设置(PostgreSQL、Redis)更新 Feed

python - 如何在 pyspark 上创建分层拆分训练、验证和测试集?

python - TensorFlow 无法将字符串类型的 Tensor 复制到设备

c# - OmniSharp MSBuild ProjectManager 无法更新我的 .cspr