Спасибо всем за помощь в этом и за то, что разбирались с некоторыми другими частями кода.
Проблема, однако, заключалась в том, что стиль менялся при втором щелчке. Через несколько часов у меня есть причина и решение для всех, кто страдает от этого. Если кто-то из гораздо более опытных людей, ответивших на этот вопрос, считает, что этот ответ неправильный или у них есть лучший ответ, пожалуйста, опубликуйте его, но сейчас я нашел единственный способ его исправить.
Причина:
Использование setState корректно отображало переменные. Это можно было увидеть в консоли через console.log () и напрямую вывести на рендер, делая их видимыми.
Однако, что бы ни пытались, это не обновляло стиль. Было ли это имя стиля из таблицы стилей или встроенных стилей, они обновлялись бы по второму щелчку, а не по первому, но все равно до параметров первого. Таким образом, если при первом щелчке кнопка изменит цвет с красного на зеленый, это не произойдет, даже если новое состояние отобразилось. Однако если последующий щелчок должен был повернуть кнопку обратно в красный цвет, то кнопка теперь будет go зеленой (как это должно было быть для первого щелчка). Затем он будет go красным при третьем щелчке, по-видимому, всегда на один шаг позади статуса, переданного ему.
Решение
Чтобы исправить это, снимите стиль с основной элемент (простите терминологию, кто-то редактирует), в моем случае, элемент TouchableOpacity. Добавьте дочерний элемент View и вместо этого поместите стили в этот элемент View вместе с тернарным оператором и wallah.
Кажется, что любое изменение статуса в эффективном главном элементе или контейнере, если вы предпочитаете, вступает в силу только после другой рендер, не содержащийся в setStatus.
Окончательный код:
export class NavTabItem extends React.Component {
constructor(props) {
super(props);
this.state = {
active: false
}
}
NavTabAction = () => {
this.setState({active: !this.state.active})
}
render() {
this.state.active == true ? console.log("selected") : console.log("unselected")
return (
<TouchableOpacity onPress={this.NavTabAction}>
// added View containing style and ternary operator
<View style={this.state.active == true ? styles.NavTabItemSelected : styles.NavTabItem}>
<View style={styles.NavTabIcon} />
<TextCap11 style={styles.NavTabLabel}>{this.props.children}</TextCap11>
</View>
// End added view
</TouchableOpacity>
);
}
}