Есть ли способ получить начальное состояние?

Я пытаюсь сбросить состояние счетчика кликов. После 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 ответа


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


Моим первым шагом отладки было бы проверить, вызывается ли 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})
    }
  }

Есть идеи?

10000