Как передать значение this.state в пользовательских навигационных параметрах в React-Native

Я новичок в React-Native и пытаюсь выяснить с помощью React-Native Navigation, как передавать значения в мой пользовательский заголовок

Вот как выглядит мой Компонент А с 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 и получить к ним доступ в NavigationOptions.

1 ответ

Решение

Если вам нужно получить доступ к params из navigationOptions, то вам нужно изменить свой код как

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

как упомянуто здесь

Другие вопросы по тегам