Katakanlah saya memiliki komponen dengan render seperti ini:
<View style={jewelStyle}></View>
Di mana permataStyle =
{
borderRadius: 10,
backgroundColor: '#FFEFCC',
width: 20,
height: 20,
},
Bagaimana saya bisa membuat warna latar belakang dinamis dan ditetapkan secara acak? Saya sudah mencoba
{
borderRadius: 10,
backgroundColor: getRandomColor(),
width: 20,
height: 20,
},
Tapi ini membuat semua tampilan memiliki warna yang sama, saya ingin masing-masing unik.
Ada tips?
css
reactjs
react-native
Pete Thorne
sumber
sumber
Stylesheet.create()
?Ya, Anda bisa dan sebenarnya, Anda harus menggunakan
StyleSheet.create
untuk membuat gaya Anda.Lalu:
sumber
StyleSheet.flatten
hanya membuang pengoptimalan apa pun dariStyleSheet.create
seperti yang dinyatakan dalam dokumen: "CATATAN: Berhati-hatilah karena menyalahgunakan ini dapat membebani Anda dalam hal pengoptimalan. ID mengaktifkan pengoptimalan melalui bridge dan memori secara umum. Mengacu ke objek gaya secara langsung akan membuat Anda kehilangan pengoptimalan ini. " ( facebook.github.io/react-native/docs/stylesheet.html ).Jika Anda masih ingin memanfaatkan
StyleSheet.create
dan juga memiliki gaya dinamis, cobalah ini:Perhatikan bagaimana
style
properti dariView
disetel sebagai larik yang menggabungkan lembar gaya Anda dengan gaya dinamis Anda.sumber
Yang termudah adalah milik saya:
sumber
Memiliki beberapa masalah secara sintaksis. Ini berhasil untuk saya
sumber
Anda akan menginginkan sesuatu seperti ini:
Dalam contoh ini saya mengambil array baris, yang berisi data untuk baris dalam komponen, dan memetakannya ke dalam array komponen Teks. Saya menggunakan gaya sebaris untuk memanggil
getRandomColor
fungsi setiap kali saya membuat komponen Teks baru.Masalah dengan kode Anda adalah Anda mendefinisikan gaya satu kali dan oleh karena itu getRandomColor hanya dipanggil sekali - saat Anda menentukan gaya.
sumber
Saya tahu ini sudah sangat terlambat, tetapi bagi siapa pun yang masih bertanya-tanya, inilah solusi mudah.
Anda bisa membuat array untuk gaya:
Yang kedua akan menimpa warna latar belakang asli seperti yang dinyatakan dalam lembar gaya. Kemudian ada fungsi yang mengubah warna:
Ini akan menghasilkan warna hex acak. Kemudian panggil saja fungsi itu kapan saja dan bam, warna latar belakang baru.
sumber
Saya tahu ada beberapa jawaban, tapi menurut saya yang terbaik dan paling sederhana adalah menggunakan keadaan "Untuk berubah" adalah tujuan negara.
}
sumber
Anda dapat mengikat nilai status secara langsung ke objek gaya. Berikut ini contohnya:
sumber
Ya, Anda bisa membuat gaya dinamis. Anda dapat meneruskan nilai dari Komponen.
Pertama buat StyleSheetFactory.js
kemudian gunakan dalam komponen Anda dengan cara berikut
sumber
Menggunakan operator penyebaran objek "..." berhasil untuk saya:
sumber
Jika Anda menggunakan layar dengan filter misalnya, dan Anda ingin mengatur latar belakang filter apakah sudah dipilih atau tidak, Anda dapat melakukan:
Di set filter mana adalah:
PS: fungsinya
this.props.setVenueFilter(filters)
adalah aksi redux, danthis.props.venueFilters
merupakan status redux.sumber
Jika seseorang perlu menerapkan ketentuan
sumber
Inilah yang berhasil untuk saya:
Untuk beberapa alasan, ini adalah satu-satunya cara saya memperbarui dengan benar.
sumber