Dalam Bereaksi asli, setidaknya ada tiga cara untuk membuat tombol: TouchableNativeFeedback
, TouchableHighlight
dan TouchableOpacity
. Ada juga TouchableWithoutFeedback
, yang dalam dokumentasinya dengan jelas menyatakan Anda tidak boleh menggunakan karena "semua elemen yang merespons pers harus memiliki umpan balik visual saat disentuh".
- TouchableNativeFeedback hanya untuk Android dan "menggantikan Tampilan dengan contoh RCTView lainnya"
- TouchableHighlight "menambahkan tampilan ke hierarki tampilan"
- TouchableOpacity bekerja "tanpa mengubah hierarki tampilan"
Apakah ada perbedaan signifikan lainnya di antara ketiganya? Apakah salah satunya adalah komponen goto? Dalam hal apa yang harus Anda gunakan TouchableHighlight
lebih TouchableOpacity
? Apakah ada implikasi kinerja?
Saya sedang menulis aplikasi sekarang, dan menemukan bahwa ketiganya memiliki penundaan yang signifikan antara ketuk dan tindakan (dalam hal ini perubahan navigasi). Apakah ada cara untuk membuatnya lebih cepat?
sumber
Jawaban:
sumber: https://medium.com/differential/better-cross-platform-react-native-components-cb8aadeba472 , oleh Nick Wientge
TouchableHighlight
• Kegunaan: Menggelapkan atau mencerahkan latar belakang elemen saat ditekan.
• Kapan menggunakannya: Di iOS untuk elemen atau tombol yang dapat disentuh yang memiliki bentuk atau latar belakang yang solid, dan pada item ListView.
TouchableOpacity
• Fungsi: Meringankan opasitas seluruh elemen saat ditekan.
• Kapan menggunakannya: Di iOS untuk elemen yang dapat disentuh yang berupa teks mandiri atau ikon tanpa warna latar belakang.
TouchableNativeFeedback
• Kegunaan: Menambahkan efek riak ke latar belakang saat ditekan.
• Kapan menggunakannya: Di Android untuk hampir semua elemen yang dapat disentuh.
sumber
Nah, beginilah biasanya saya memutuskan apa yang akan digunakan:
TouchableNativeFeedback
TouchableHighlight
. (TouchableOpacity
memiliki beberapa bagian aneh saat Anda mengontrol opasitas sendiri).TouchableOpacity
karena lebih "telanjang" daripadaTouchableHighlight
sumber
Saya pikir perbedaan esensial utama seperti yang dinyatakan dalam Dokumen:
TouchableHighlight must have one child (not zero or more than one). If you wish to have several child components, wrap them in a View.
tautanTouchableHighlight
TouchableOpacity
sumber
Jika Anda menghendaki
TouchableHighlight
TouchableOpacity
sumber
<TouchableHighlight underlayColor="transparent" />
... dan Facebook menggabungkan semua itu di Aplikasi F8 mereka github.com/fbsamples/f8app/blob/master/js/common/F8Touchable.js