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