如何在React Navigation 5中动态设置导航栏标题和背景颜色

时间:2020-11-05 08:25:03

标签: javascript reactjs react-native react-native-android react-navigation

我正在使用React Navigation Bar v5并在App.js中设置标题,但是我想在显示屏幕时动态更改它。 我尝试了this.props.navigation.navigate('ExistStock', { title: 'WHATEVER' }),但由于它在v4中无法正常工作。 更改导航栏标题和背景颜色的正确方法是什么?

3 个答案:

答案 0 :(得分:0)

使用React本机导航中的useFocusEffect和navigation.setOptions来动态设置渲染上的导航选项。

import React, {useCallback} from 'react';
import {useFocusEffect} from '@react-navigation/native';  


const myFunctionalComponent = props => {   

        useFocusEffect(
            useCallback(() => {
                props.navigation.setOptions({
                    title: 'Whatever',
                });
            }, [props.navigation])
        );

...

您可以应用文档中列出的任何选项 https://reactnavigation.org/docs/headers/#setting-the-header-title

答案 1 :(得分:0)

您可以像在V4中一样在screenOptions上进行操作。

您将必须传递参数

navigation.navigate('Details', { id: item.id, name: item.name,color:item.color })

在导航器中,您可以将其用作标题和颜色

  <Stack.Screen
        name="Details"
        component={Details}
        options={({ route }) => ({
          title: route.params.name,
          headerStyle: {
            backgroundColor: oute.params.color,
          },
        })}
      />

答案 2 :(得分:0)

componentDidMount() {
    this.props.navigation.setOptions({
        title: "Whatever"
    });
}

可用于在屏幕上添加标题或相应地更改标题。

componentDidMount() {
    this.props.navigation.setOptions({
        title:
    this.state.count === 0
      ? 'Select items'
      : `${this.state.count} items selected`,
});
    });
}

根据组件的状态更改标题。