简体   繁体   English

如何在反应原生功能组件中更改 header 标题?

[英]how to change header title in react native functional component?

i am using react-navigation v4 and i want to change the title and the approach i am using is slow while rendering(title that is set in the stack navigator is rendered first and then new one is rendered),is there better way i can render only the new one我正在使用 react-navigation v4 并且我想更改标题并且我使用的方法在渲染时很慢(首先渲染在堆栈导航器中设置的标题,然后渲染新的标题),有没有更好的方法我只能渲染新的那一个

export default NewsList = ({ results, navigation}) => {
    return <View >
        <FlatList
            data={results}
            keyExtractor={result => result.id}
            renderItem={({ item }) => {
                return (
                    <TouchableOpacity 
                        onPress={() => navigation.navigate( 'news',title: item.title)}>
                        <NewsCard result={item} />
                    </TouchableOpacity>)
            }}
        />
    </View>
};

//////////////////////////////////////////////////////////////////// ///////////////////////////////////////// /////////////////

export default NewsScreen = ({ navigation}) => {
    NewsScreen.navigationOptions = {
       title: navigation.getParam("title");,
       };
 }

//////////////////////////////////////////////////////////////////// ///////////////////////////////////////// /////////////////

const NewsStack = createStackNavigator({
NewsList :NewsList,
News :NewsScreen 

},{
    initialRouteName:'NewsList',
    defaultNavigationOptions: {
        
        headerStyle: {
          backgroundColor: '#4BB5C3',
        },
      },
      navigationOptions: {
        tabBarLabel: 'NewsList',
      },
});

export default createAppContainer(NewsStack);

Ciao, try to set title before navigate into NewsList like this: Ciao,在导航到NewsList之前尝试设置标题,如下所示:

export default NewsList = ({ results, navigation}) => {
return <View >
    <FlatList
        data={results}
        keyExtractor={result => result.id}
        renderItem={({ item }) => {
            return (
                <TouchableOpacity 
                    onPress={() => {
                        navigation.setParams({ otherParam: item.title });
                        navigation.navigate('news');
                     }
                  }>
                    <NewsCard result={item} />
                </TouchableOpacity>)
        }}
    />
</View>
};

And I think you could remove navigationOptions in NewsScreen .而且我认为您可以在NewsScreen中删除navigationOptions

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM