如何使用React Navigation仍然呈现组件时更新标题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用React Navigation仍然呈现组件时更新标题?相关的知识,希望对你有一定的参考价值。

我正在编写一个React Native应用程序,我正在使用React Navigation(V2)。在我的组件更新后,我想更新navigationOptions并添加一个新按钮。这是我尝试过的代码:

  static navigationOptions = ({ navigation }) => {
    const options = {
      headerTitle: SCREEN_TEXT_MENU_HEADER,
      headerStyle: {
        borderBottomWidth: 0,
        marginBottom: -5
      }
    };
    if (navigation.getParam("drawer", true)) {
      options["headerLeft"] = (
        <HeaderIconButton
          onClick={() => {
            navigation.openDrawer();
          }}
          icon={require("../../assets/icons/burgerMenu.png")}
        />
      );
    }
    if (navigation.getParam("renderBillButton", false)) {
      options["headerRight"] = (
        <HeaderIconButton
          onClick={() => {
            navigation.navigate("BillScreen");
          }}
          type="primary"
          icon={require("../../assets/icons/euro.png")}
        />
      );
    }
    return options;
  };

  componentDidUpdate = prevProps => {
    const { navigation, orders } = this.props;
    if (prevProps.orders.length !== orders.length) {
      navigation.setParams({
        renderBillButton: orders.length > 0
      });
    }
  };

这种方法的问题是,navigationOptionscomponentDidUpdate()之后不会被重置。如何使用React Navigation动态调整标题?

答案

您可以使用this.props.navigation.setParams()函数来更新导航状态参数。

参考:https://reactnavigation.org/docs/en/headers.html#updating-navigationoptions-with-setparams

另一答案

好的,这里出了什么问题:我还必须在componentDidMount()中调用相同的代码,否则在加载时不会影响页面。所以除了我的问题的代码,我补充说:

componentDidMount = () => {
  const { navigation, order } = this.props;
  navigation.setParams({
    renderBillButton: orders.length > 0
  });
}

以上是关于如何使用React Navigation仍然呈现组件时更新标题?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用React Navigation在一个屏幕上呈现两个标题?

当 animationEnabled 属性设置为 false 时,React Navigation 动画仍然显示

React Native Navigation覆盖onBack

React Native Navigation v2 (wix) 禁用 TopBar

将参数传递到上一个屏幕并使用react-navigation进行更新

如何使用 React Faux DOM 在 D3 分组条形图中呈现矩形?