Предупреждение: невозможно обновить во время существующего перехода состояния (например, в `render`). Методы рендеринга должны быть чистой функцией реквизита и состояния - PullRequest
1 голос
/ 24 июня 2019

Когда я нажал на кнопку touchableopacity, чтобы перейти на другой экран в той же вкладке, я получил это предупреждение, и я не могу перемещаться.Когда я запускаю, я вижу страницу навигации на моем экране, но при нажатии вкладки перенаправляет меня на ту же вкладку, и все же кнопки не работают

Я создал стековый навигатор и навигатор по вкладкам и объединил их обоих.но использование this.props.navigation.navigate("checkout") не работает

<View style={{flexDirection:'column',alignItems:'center'}}>
   <TouchableOpacity 
      activeOpacity = { .5 } 
      onPress{this.props.navigation.navigate('CatWise') }
   >
      <Image style={{height:35,width:35,resizeMode:"cover"}} source={require('../assets/cat_image.png')}/>
      <Text>Electronics</Text>
   </TouchableOpacity>
</View>

«Я ожидаю, что после того, как я нажму на эту touchableopacity, он должен перенаправить меня на экран catwise» «Я получил предупреждение как = Невозможно обновить в существующем состояниипереход (например, в render). Методы рендеринга должны быть чистой функцией реквизита и состояния. "

1 Ответ

3 голосов
/ 24 июня 2019

Измените свою функцию onPress следующим образом:

<TouchableOpacity 
  activeOpacity = { .5 } 
  onPress{() => this.props.navigation.navigate('CatWise') }

>

Когда вы передадите свою функцию, она будет выполнена непосредственно во время рендеринга, что означает, что результат выполнения функции будетпередаваться обработчику onPress, а не самой функции

...