Я пытаюсь сбросить состояние счетчика кликов. После 5 кликов пользователи переходят на другой экран, и на этом другом экране есть кнопка, которая позволяет пользователям вернуться к экрану, где мой счетчик кликов, но состояние по-прежнему составляет 4 клика.
я попытался установить состояние моих кликов на 0 с помощью componentwillunmount, я попытался установить начальное состояние const с помощью щелчка 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
Спасибо за помощь
Вместо того, чтобы сбрасывать клики в componentWillUnmount
, что, если вы добавите его в логику везде, где вы увеличиваете клики в состоянии? Проверьте, что если кликов 5, а пользователь щелкает снова, setState
кликов возвращается к 0.
Мой первый шаг отладки — проверить, вызывается ли componentWillUnmount()
. Вы можете использовать
componentWillUnmount(){
this.setState({click: 0})
console.info("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})
}
}