如何在 React-Native 上的自定义导航选项中传递 this.state 值

How to pass this.state value in custom navigationOptions on React-Native

我是 React-Native 的新手,我正在尝试使用 React-Native 导航了解如何在我的自定义 header

中传递值

这是我的组件 A 与 CustomHeader 的外观

constructor(props) {
    super(props);       
    this.state = {
      sortId: 4
    }
 }

componentDidMount() {
    this.props.navigation.setParams({
      sortId: this.state.sortId
    })
}

static navigationOptions = {
    header: props =>    // Your custom header
      <CustomHeader
         sortId={props.navigation.params.sortId}
      />
};

在我的 CustomHeader 组件中,当我尝试显示这样的值时

export default class CustomHeader extends Component {

  constructor(props) {
   super(props);
  }

 componentWillMount() {
   Alert.alert(this.props.sortId.toString());
 }

它不工作,我收到错误:undefined is not an object (evaluating 'this.props.sortId')

但是当我像下面这样硬编码一个值时,它确实有效

static navigationOptions = {
    header: props =>    // Your custom header
      <CustomHeader
         sortId={4} //this works
      />
};

知道如何传递参数吗?我错过了什么?我不明白如何向 props 添加参数并在导航选项中访问它们。

如果您需要访问 navigationOptionsparams,那么您需要将代码更改为

    static navigationOptions = {
    header: props =>    // Your custom header
      <CustomHeader
         sortId={props.navigation.state.params.sortId} //... state is missing
      />
};

如前所述here