Jestem nowy w React i rozumiem zalety wbudowanych stylów opartych na komponentach. Ale zastanawiam się, czy istnieje przyzwoity sposób na stworzenie jakiegoś globalnego stylu. Na przykład chciałbym używać tej samej kolorystyki tekstu i przycisków w całej mojej aplikacji.
Zamiast powtarzać w każdym komponencie (a następnie zmieniać go w x miejscach, jeśli zajdzie taka potrzeba), moją pierwszą myślą było utworzenie „bazowej” klasy StyleSheet w swoim własnym pliku i zaimportowanie jej do moich komponentów.
Czy jest lepszy lub bardziej „reaguj” sposób?
react-native
Patm
źródło
źródło
import { StyleSheet } from 'react-native';
style={defaultStyle}
dodania. Zamiast tego możesz utworzyćDefaultView
i użyć tego zamiast dostarczonego,view
który jest stylizowany na twoją specyfikację.Utwórz plik dla swoich stylów (IE,
Style.js
).Oto przykład:
W każdym z plików, których chcesz użyć swojego stylu, dodaj następujące elementy:
źródło
Możesz także wypróbować responsywny rozszerzony arkusz stylów, który obsługuje globalne zmienne stylów:
źródło
Jeśli chcesz ustawić tylko zmienne globalne, możesz spróbować.
AppStyles.js
index.ios.js
źródło
Musisz utworzyć plik, aby przechowywać w nim cały styl, taki jak „ styles.js ” i napisać kod typu css, jak potrzebujesz
a teraz możesz użyć stylu globalnego, jak widzisz
źródło
Wypróbuj moją bibliotekę, która reaguje na tachiony w stylu natywnym , która nie tylko zapewnia globalne style, ale także pierwszy w projekcie, responsywny system układania z szerokościami i wysokościami w stosunku do rozmiaru głównego czcionki.
źródło
Wszystkie te metody bezpośrednio odpowiadają na pytanie, ale jeśli o mnie chodzi, nie jest to sposób na zrobienie tego w systemie projektowania opartego na komponentach, takim jak React.
Możemy zacząć od atomowych komponentów, a następnie ułożyć je warstwami i pogrupować aż do samej góry. Poniższy artykuł może wyjaśnić ten tok myśli: http://atomicdesign.bradfrost.com/chapter-2/
Jeśli potrzebujesz podstawowego komponentu, który nie istnieje, możesz go zrobić. Następnie możesz wykonać z nim inne, mniej specyficzne komponenty. na przykład:
// rerender is cheaper without style prop when // the default style is an unchanged reference // instead of a new object every time. const style = { color : 'MidnightBlue', fontSize: 14, } function getStyle (styleProp) { // styleProp is able to overwrite style if (styleProp) return {...style, ...styleProp} else return style } export default function CustomText (props) { return ( <Text style={getStyle(props.style)}> {props.children} </Text> ) }
Następnie używaj
CustomText
wszędzie zamiastText
. Można również zrobić to zView
,div
,span
czy cokolwiek innego.źródło
<Text />
z<CustomText />
wszędzie. Możesz nawet zaimportować CustomText jako Text, więc musisz tylko zastąpić import.Zewnętrzny plik CSS main.css
utwórz wystąpienie pliku css w komponencie.
źródło
Tutaj możesz znaleźć elegancki sposób sortowania stylów, a następnie importować je do różnych komponentów, możesz utworzyć folder, w którym zbierzesz wszystkie pliki stylów i utworzysz plik index.js, który będzie działał jako fasada:
plik index.js będzie wyglądał następująco:
a następnie zaimportuj w ten sposób:
Więcej informacji tutaj:
https://thoughtbot.com/blog/structure-for-styling-in-react-native
źródło
Mój działał przy użyciu podobnego
Utwórz katalog o nazwie „constants”. Utwórz plik w ./constants/AppStyles.js
Następnie w App.js odwołaj się do tego pliku i utworzonych stylów.
Pułapki, w które wpadłem
Znalazłem dobry kurs online i od razu go wymyśliłem
źródło
Spójrz na motywy Shoutem dla React Native.
Oto, co otrzymujesz dzięki motywowi Shoutem:
Styl globalny, w którym określony styl jest automatycznie stosowany do komponentu według nazwy stylu:
Aktywowanie określonego stylu komponentu za pomocą
styleName
(jak klasa CSS):Automatyczne dziedziczenie stylu:
Styl zagnieżdżony dla komponentów złożonych:
Aby to działało, musisz użyć
StyleProvider
komponentu opakowania, który zapewnia styl wszystkim innym komponentom poprzez kontekst. Podobny do ReduxStoreProvider
.Musisz także podłączyć komponent do stylu,
connectStyle
aby zawsze używać połączonego komponentu. Podobny do Reduxconnect
.Możesz zobaczyć przykład w dokumentacji.
I ostatnia rzecz, dostarczyliśmy również zestaw komponentów w naszym zestawie narzędzi interfejsu użytkownika, które są już połączone ze stylem, więc możesz je po prostu zaimportować i nadać styl w swoim globalnym stylu / motywie.
źródło