То, что вы делаете, эквивалентно этому:
function callRemoveAlert() {
this.removeAlert();
}
this.props.isFocused
? console.log("Focused")
: callRemoveAlert
Вы определяете функцию для вызова this.removeAlert()
, но никогда не вызываете эту функцию.Чтобы заставить ваш код работать, вам нужно сделать:
this.props.isFocused
? console.log("Focused")
: this.removeAlert()
Но поскольку в removeAlert
вы намереваетесь изменить состояние, поэтому Я не думаю, что вы должны делать это таким образом .По умолчанию компонент React при каждом изменении реквизита и состояния вызывает render
.В вашей реализации render
вызовет setState
, а изменение состояния вызовет render
, вызывая бесконечный цикл обновления и рендеринга состояния.Лучший способ сделать это - использовать componentDidUpdate
:
componentDidUpdate(prevProps) {
if (this.props.isFocused !== prevProps.isFocused) {
(this.props.isFocused) ?
? console.log("Focused")
: this.removeAlert();
}
}
render() {
return(<View>code...</View>
)
}}