Jak zmienić tło wybranego elementu w liście przycisków

Jak zmienić tło wybranego elementu w liście przycisków
Dev007
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 163
0

Wyświetlam listę i chciałbym po wybrać jeden z rekordów aby tło tego rekordu zmieniło się

Kopiuj
function HoursComponent({id, time}) {
    const TimewithoutLast3 = time.slice(0, -3);
    return (
        <View style={styles.rootContainer}>
            <TouchableOpacity >
                <Text style={styles.buttonText}>{TimewithoutLast3}</Text>
            </TouchableOpacity>
        </View>
    );
}
Kopiuj
<FlatList
    numColumns={4}
    data={newItem}
    keyExtractor={(item) => item.id}
    renderItem={({ item }) => (<HoursComponent {...item} />)} />
Kopiuj
rootContainer: {
  borderRadius: 7.3,
  borderStyle: "solid",
  borderWidth: 1.3,
  borderWidth:2,
  width: 80,
  height: 30,
  borderColor: Colors.sandy,
  textAlign: 'center',
  justifyContent: 'center',
  margin: 5,
//   padding: 20,
},
Szado
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 64
0

Utwórz nowy stan z kolorem tła w komponencie HoursComponent i ustaw mu domyślną wartość, np. const [bgColor, setBgColor] = useState('#ffffff'). Dla View nadpisz style w taki sposób: style={{...styles.rootStyles, backgroundColor: bgColor}} by kolor tła był pobierany dynamicznie z utworzonego stanu. Złap event przy kliknięciu na rekord; dla TouchableOpacity do atrybutu onPress przypisz funkcję ustawiającą stan na nowy kolor, np. setBgColor('#ff0000'). To tak w skrócie.

Dev007
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 163
0

@Szado Dzięki za pomoc. Mam jeszcze jedno pytanie bo w tej chwili mogę oznaczyć kilka przycisków a co jakbym chciał żeby można było oznaczy tylko jeden?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.