Powiedzmy, że mam komponent z takim renderowaniem:
<View style={jewelStyle}></View>
Gdzie jewelStyle =
{
borderRadius: 10,
backgroundColor: '#FFEFCC',
width: 20,
height: 20,
},
Jak mogę ustawić dynamiczny i losowy kolor tła? próbowałem
{
borderRadius: 10,
backgroundColor: getRandomColor(),
width: 20,
height: 20,
},
Ale to sprawia, że wszystkie wystąpienia View mają ten sam kolor, chcę, aby każdy był wyjątkowy.
Jakieś wskazówki?
css
reactjs
react-native
Pete Thorne
źródło
źródło
Stylesheet.create()
?Tak, możesz i właściwie powinieneś używać go
StyleSheet.create
do tworzenia swoich stylów.I wtedy:
źródło
StyleSheet.flatten
po prostu odrzuca wszelką optymalizację,StyleSheet.create
jak podano w dokumentach: „UWAGA: Zachowaj ostrożność, ponieważ nadużywanie tego może obciążyć Cię w zakresie optymalizacji. Identyfikatory umożliwiają optymalizacje przez most i ogólnie pamięć. Bezpośrednie odwoływanie się do stylów obiektów pozbawi Cię te optymalizacje ”. ( facebook.github.io/react-native/docs/stylesheet.html ).Jeśli nadal chcesz korzystać z
StyleSheet.create
dynamicznych stylów, a także je mieć, wypróbuj to:Zwróć uwagę, że
style
właściwość elementuView
jest ustawiona jako tablica, która łączy Twój arkusz stylów ze stylami dynamicznymi.źródło
Najłatwiejszy jest mój:
źródło
Miałem jakiś problem syntaktycznie. To zadziałało dla mnie
źródło
Będziesz chciał coś takiego:
W tym przykładzie biorę tablicę wierszy, zawierającą dane dla wierszy w komponencie i mapuję ją na tablicę komponentów Text. Używam stylów wbudowanych do wywoływania
getRandomColor
funkcji za każdym razem, gdy tworzę nowy komponent Text.Problem z twoim kodem polega na tym, że definiujesz styl raz i dlatego getRandomColor jest wywoływany tylko raz - kiedy definiujesz styl.
źródło
Wiem, że jest bardzo późno, ale dla każdego, kto wciąż się zastanawia, jest proste rozwiązanie.
Możesz po prostu stworzyć tablicę dla stylów:
Drugi zastąpi oryginalny kolor tła, zgodnie z opisem w arkuszu stylów. Następnie użyj funkcji, która zmienia kolor:
Spowoduje to wygenerowanie losowego koloru szesnastkowego. Następnie po prostu wywołaj tę funkcję kiedykolwiek i bach, nowy kolor tła.
źródło
Wiem, że istnieje kilka odpowiedzi, ale myślę, że najlepszym i najprostszym jest użycie stanu „Zmieniać” jest celem stanu.
}
źródło
Wartość stanu można powiązać bezpośrednio z obiektem stylu. Oto przykład:
źródło
Tak, możesz tworzyć dynamiczne style. Możesz przekazywać wartości z komponentów.
Najpierw utwórz StyleSheetFactory.js
następnie użyj go w swoim komponencie w następujący sposób
źródło
Użycie operatora rozprzestrzeniania obiektów "..." zadziałało dla mnie:
źródło
Jeśli korzystasz na przykład z ekranu z filtrami i chcesz ustawić tło filtru dotyczące tego, czy został wybrany, czy nie, możesz:
Na którym zestawie znajduje się filtr:
PS: funkcja
this.props.setVenueFilter(filters)
jest działaniem reduks ithis.props.venueFilters
jest stanem reduks.źródło
Na wypadek, gdyby ktoś musiał zastosować warunki
źródło
Oto, co zadziałało dla mnie:
Z jakiegoś powodu był to jedyny sposób, w jaki mój mógł się poprawnie zaktualizować.
źródło