Прежде всего: почему вы ищете путь без использования состояния? State будет «способом реагирования» на обработку этой информации, тем более что я предполагаю, что вы хотите перерисовать ваш компонент после изменения значения.
Но да, вы можете объявлять переменные вне вашей функции рендеринга или даже вне класса вашего компонента .
Когда вы начинаете изучать реактивный род, прямо сейчас, возможно, взгляните на функциональные компоненты и перехватчики реагирования (например, перехватчик useState для состояния), поскольку это более современный способ написания реагирующих компонентов.
Когда ваше состояние растет и его нужно разделить между различными компонентами в вашем дереве, вы можете захотеть взглянуть на контексты реакции или даже на библиотеку управления состояниями, такую как redux.
Edit
Я также добавляю версию функционального компонента вашего компонента, чтобы показать, как вы можете управлять своим состоянием с помощью хуков, что для меня намного проще, поскольку обновление состояния гораздо менее сложно. Примечание. Функциональность - это только то, что пытается сделать ваш пример.
import React, { useState } from 'react'
import { StyleSheet, Text, View, TouchableOpacity, Button } from 'react-native'
import Green from './components/Green.js'
const App = props => {
let score // user score
let seq = [] //order of playing colors
let playerSeq = [] //order of user pressing the colors
let round // round number
let ok //does the user pressed right
let win
let compTurn
const [ greenF, setGreenF ] = useState(false) // [value, setter] = useState(initial)
const play = () => {
seq = [ 1, 2, 3, 1, 4 ] //just for test
compTurn = true
round = 1
for (var i = 0; i < round; i++) {
switch (i) {
case 1:
setGreenF(true) // triggers rerender (after all state changes are done)
break
case 2:
//tbchanged
break
case 3:
//tbchanged
break
case 4:
//tbchanged
break
}
compTurn = false
}
}
return (
<View>
<Button title="start" color="black" onPress={play} />
<Green greenFlash={greenF}> </Green>
</View>
)
}
export default App