Есть ли способ получить начальное состояние? - PullRequest
3 голосов
/ 17 мая 2019

Я пытаюсь сбросить состояние счетчика кликов. После 5 кликов пользователи переходят на другой экран, и на этом другом экране есть кнопка, которая позволяет пользователям возвращаться к экрану, где мой счетчик кликов находится, но состояние по-прежнему составляет 4 клика.

Я пытался установить мои клики на 0 с помощью componentwillunmount, я пытался поместить const initialstate с щелчком 0 и вызвать его в componentwillunmount


export default class Ecran1_Tactile extends React.Component {

//setting state

  constructor(props) {
    super(props)

    this.state = {
      opacity: 0,
      click: 0,
    }  
  }

//My navigation after 4 clicks

  _displayScreen = () => {
    if(this.state.click === 4){
      this.props.navigation.navigate('Ecran2_Tactile')
    }
  }

//trying to reset state

  componentWillUnmount(){
    this.setState({click: 0})
  }

Я ожидаю, что состояние вернется к 0, как только пользователи нажмут 4 раза, но оно останется 4

Спасибо за вашу помощь

Ответы [ 2 ]

4 голосов
/ 17 мая 2019

Вместо сброса кликов в componentWillUnmount, что если вы добавите его в логику, где бы вы ни увеличивали количество кликов в состоянии? Имейте проверку, которая говорит, что если число кликов равно 5 и пользователь нажимает снова, setState кликов возвращается к 0.

2 голосов
/ 17 мая 2019

Мой первый шаг отладки - проверить, вызывается ли componentWillUnmount().Вы можете использовать

componentWillUnmount(){

    this.setState({click: 0})
    console.log("componentWillUnmount called");

  }

Во-вторых, если ваши ожидания бизнес-логики «Я ожидаю, что состояние вернется к 0, как только пользователи щелкнули 4 раза», почему бы просто не сделать setState в блоке условий?

//My navigation after 4 clicks

  _displayScreen = () => {
    if(this.state.click === 4){
      this.props.navigation.navigate('Ecran2_Tactile')
      this.setState({click: 0})
    }
  }
...