Как сделать заголовок экрана динамичным? - PullRequest
0 голосов
/ 01 мая 2019

У меня есть 2 экрана списка продуктов и деталей продукта. при переходе от списка к деталям я получаю всю информацию о продукте. поэтому я хотел бы отобразить название продукта в заголовке экрана. Я сделал этот метод

DetailProduct.js:

componentWillReceiveProps(nextProps){
   if(nextProps.product.name !== undefined)
       this.props.navigation.setParams({ Name:  nextProps.product.name })
}

Navigator.js:

detailProduct: {
  screen: detailProduct,
  navigationOptions: ({ navigation }) => 
   ({title:navigation.getParam('Name', 'DefaultName'),})
}

но я получаю эту ошибку: [Нарушение инварианта: превышена максимальная глубина обновления. Это может произойти, когда компонент повторно вызывает setState внутри componentWillUpdate или componentDidUpdate. React ограничивает количество вложенных обновлений для предотвращения бесконечных циклов.] зная, что я использую избыточность. Пожалуйста, как я могу решить эту проблему, как я могу сделать заголовок динамическим. спасибо

1 Ответ

0 голосов
/ 01 мая 2019

Похоже, вам нужно изменить условие с if(nextProps.product.name !== undefined) на if(nextProps.product.name !== undefined && nextProps.product.name !== this.props.navigation.getParam('Name')).

В противном случае вы будете менять состояние каждый раз.

Рабочая демонстрация

...