Saya baru mengenal React dan saya memahami manfaat gaya inline berbasis komponen. Tapi saya bertanya-tanya apakah ada cara yang layak untuk memiliki semacam gaya global. Misalnya, saya ingin menggunakan pewarnaan Teks dan Tombol yang sama di seluruh aplikasi saya.
Daripada mengulang di setiap komponen (dan kemudian harus mengubahnya di tempat x jika perlu), pemikiran awal saya adalah membuat kelas StyleSheet 'dasar' di file itu sendiri dan mengimpornya ke komponen saya.
Apakah ada cara 'React' yang lebih baik atau lebih?
react-native
Patm
sumber
sumber
import { StyleSheet } from 'react-native';
style={defaultStyle}
ditambahkan. Sebagai gantinya, Anda dapat membuatDefaultView
dan menggunakannya sebagai ganti yang disediakanview
yang disesuaikan dengan spesifikasi Anda. Saya menulis jawaban yang merinci metode ini beberapa waktu yang lalu: stackoverflow.com/a/52429040/5243543Buat file untuk gaya Anda (IE,
Style.js
).Berikut ini contohnya:
Di salah satu file yang ingin Anda gunakan gaya Anda, tambahkan yang berikut ini:
sumber
Jika Anda hanya ingin mengatur beberapa variabel global, Anda dapat mencoba.
AppStyles.js
index.ios.js
sumber
Anda juga dapat mencoba react-native-extended-stylesheet yang mendukung variabel gaya global:
sumber
Anda harus membuat file untuk menyimpan semua gaya di dalamnya seperti ' styles.js ' dan menulis kode jenis css sesuai kebutuhan
dan sekarang Anda dapat menggunakan gaya global seperti yang Anda lihat
sumber
Coba perpustakaan saya react-native-style-tachyons , yang tidak hanya memberi Anda gaya global, tetapi juga sistem tata letak responsif yang mengutamakan desain dengan lebar dan tinggi relatif terhadap ukuran font root Anda.
sumber
Semua metode ini secara langsung menjawab pertanyaan tetapi sejauh yang saya ketahui, ini bukanlah cara melakukannya dalam sistem desain berbasis komponen seperti React.
Kita bisa mulai dengan komponen atom, lalu melapisi dan mengelompokkannya sampai ke atas. Artikel berikut mungkin membuat alur pemikiran ini lebih jelas: http://atomicdesign.bradfrost.com/chapter-2/
Jika Anda membutuhkan komponen dasar yang tidak ada, Anda membuatnya. Kemudian Anda dapat membuat komponen lain yang kurang spesifik dengannya. misalnya:
Kemudian gunakan di
CustomText
mana saja, bukanText
. Anda juga dapat melakukannya denganView
,div
,span
atau apa pun.sumber
<Text />
dengan di<CustomText />
mana - mana. Anda bahkan dapat mengimpor CustomText sebagai Teks sehingga Anda hanya perlu mengganti impor.File CSS eksternal main.css
membuat contoh file css dalam komponen.
sumber
Di sini Anda dapat menemukan cara yang elegan untuk mengurutkan gaya Anda dan kemudian mengimpornya ke berbagai komponen, Anda dapat membuat folder tempat Anda mengumpulkan semua file gaya dan membuat dan index.js yang akan berfungsi sebagai fasad:
index.js akan terlihat seperti:
lalu impor seperti ini:
Disini untuk informasi lebih lanjut:
https://thoughtbot.com/blog/structure-for-styling-in-react-native
sumber
Lihatlah Tema Shoutem untuk React Native.
Inilah yang Anda dapatkan dengan Tema Shoutem:
Gaya global di mana gaya tertentu secara otomatis diterapkan ke komponen dengan nama gayanya:
Mengaktifkan gaya khusus komponen tertentu dengan
styleName
(seperti kelas CSS):Pewarisan gaya otomatis:
Gaya bersarang untuk komponen yang disusun:
Untuk membuatnya bekerja, Anda perlu menggunakan
StyleProvider
, komponen pembungkus yang menyediakan gaya ke semua komponen lain melalui konteks. Mirip dengan ReduxStoreProvider
.Anda juga perlu menghubungkan komponen Anda ke gaya
connectStyle
sehingga Anda selalu menggunakan komponen yang terhubung. Mirip dengan Reduxconnect
.Anda dapat melihat contoh dalam dokumentasi.
Satu hal terakhir, kami juga telah menyediakan sekumpulan komponen di UI ToolKit kami yang sudah terhubung ke gaya, jadi Anda bisa mengimpornya dan gaya dalam gaya / tema global Anda.
sumber