Saya benar-benar baru untuk Bereaksi Asli dan saya bertanya-tanya bagaimana saya bisa menyembunyikan / menampilkan komponen.
Inilah kotak ujian saya:
<TextInput
onFocus={this.showCancel()}
onChangeText={(text) => this.doSearch({input: text})} />
<TouchableHighlight
onPress={this.hideCancel()}>
<View>
<Text style={styles.cancelButtonText}>Cancel</Text>
</View>
</TouchableHighlight>
Saya memiliki TextInput
komponen, yang saya inginkan adalah menunjukkan TouchableHighlight
kapan input mendapatkan fokus, lalu sembunyikan TouchableHighlight
ketika pengguna menekan tombol batal.
Saya tidak tahu cara "mengakses" TouchableHighlight
komponen untuk menyembunyikan / menampilkannya di dalam fungsi saya showCancel/hideCancel
.
Juga, bagaimana saya bisa menyembunyikan tombol dari awal?
javascript
react-native
Crysfel
sumber
sumber
Jawaban:
Saya akan melakukan sesuatu seperti ini:
sumber
return ''
toreturn null
{someBoolVal && <Component />}
dan itu hanya akan ditampilkan jika nilai bool benar.Dalam fungsi render Anda:
Maka lakukan saja:
sumber
{ this.state.showTheThing && (<Text>foo</Text> && <Text>bar</Text>)}
hanya "bar" yang ditampilkan di UI. Saya harapkan "foo" dan "bar" akan ditampilkan. Apa yang harus saya lakukan untuk menyelesaikan ini adalah menelepon{ this.state.showTheThing && (<Text>foo</Text>} { this.state.showTheThing && (<Text>bar</Text>}
&&
tidak menggabungkan elemen{ this.state.showTheThing && (<View><Text>foo</Text><Text>bar</Text></View>)}
{this.state.hasPic && <Button title="Go to next step" onPress={this._nextStep} />}
<React.Fragment><Text>Foo</Text><Text>Bar></Text></React.Fragment>
Dalam bereaksi atau bereaksi asli, cara komponen menyembunyikan / menampilkan atau menambah / menghapus tidak berfungsi seperti di android atau iOS. Sebagian besar dari kita berpikir akan ada strategi serupa
Tetapi cara bereaksi pekerjaan asli sama sekali berbeda. Satu-satunya cara untuk mencapai fungsi semacam ini adalah dengan memasukkan komponen Anda dalam DOM Anda atau menghapus dari DOM.
Di sini, dalam contoh ini saya akan mengatur visibilitas tampilan teks berdasarkan klik tombol.
Gagasan di balik tugas ini adalah membuat variabel keadaan yang disebut status memiliki nilai awal yang disetel ke false ketika peristiwa klik tombol terjadi maka nilainya beralih. Sekarang kita akan menggunakan variabel status ini selama pembuatan komponen.
satu-satunya hal yang perlu diperhatikan dalam cuplikan ini adalah
renderIf
yang sebenarnya merupakan fungsi yang akan mengembalikan komponen yang diteruskan berdasarkan nilai boolean yang diteruskan kepadanya.sumber
di render () Anda dapat menampilkan JSX secara kondisional atau mengembalikan null seperti pada:
sumber
Saya perlu beralih di antara dua gambar. Dengan peralihan bersyarat di antara mereka ada penundaan 5 detik tanpa gambar ditampilkan.
Saya menggunakan pendekatan dari jawaban amos downvoted. Posting sebagai jawaban baru karena sulit untuk memasukkan kode ke dalam komentar dengan format yang tepat.
Fungsi render:
Gaya:
sumber
Sebagian besar waktu saya melakukan sesuatu seperti ini:
Jika Anda baru mengenal pemrograman, baris ini pasti asing bagi Anda:
Baris ini setara dengan
Tetapi Anda tidak dapat menulis kondisi if / else dalam konten JSX (mis. Bagian pengembalian () dari fungsi render) sehingga Anda harus menggunakan notasi ini.
Trik kecil ini bisa sangat berguna dalam banyak kasus dan saya menyarankan Anda untuk menggunakannya dalam perkembangan Anda karena Anda dapat dengan cepat memeriksa suatu kondisi.
Salam,
sumber
Sembunyikan Dan Tampilkan tampilan induk
Activity Indicator
Sembunyikan dan Tampilkan sebagai Ikuti
Referensi lengkap
Pada Tombol, tekan setel status sebagai berikut
Ketika Anda perlu bersembunyi
sumber
Bereaksi tata letak Asli memiliki
display
dukungan properti, mirip dengan CSS. Nilai yang mungkin:none
danflex
(standar). https://facebook.github.io/react-native/docs/layout-props#displaysumber
position: absolute
, itu tidak benar-benar menyembunyikannya! Bug yang dikenal dari 0,54 - 0,59 (setidaknya): github.com/facebook/react-native/issues/18415gunakan saja
sumber
menyatakan terlihat salah sehingga dengan modal / tampilan default disembunyikan
contoh = () => {
}
** Panggilan fungsi **
sumber
Saya memiliki masalah yang sama di mana saya ingin menampilkan / menyembunyikan Tampilan, tetapi saya benar-benar tidak ingin UI melompat ketika hal ditambahkan / dihapus atau harus berurusan dengan rendering ulang.
Saya menulis Komponen sederhana untuk menghadapinya untuk saya. Animasi secara default, tetapi mudah untuk beralih. Saya meletakkannya di GitHub dan NPM dengan readme, tetapi semua kode di bawah.
npm install --save react-native-hideable-view
sumber
visible && (...)
.Opsi tambahan adalah menerapkan pemosisian absolut melalui gaya , mengatur komponen yang tersembunyi dalam koordinat di luar layar:
Tidak seperti di beberapa saran sebelumnya, ini akan menyembunyikan komponen Anda dari tampilan TETAPI juga akan membuatnya (simpan di DOM), sehingga membuatnya benar-benar tidak terlihat .
sumber
Jika Anda memerlukan komponen untuk tetap dimuat tetapi disembunyikan Anda dapat mengatur opacity ke 0. (Saya membutuhkan ini untuk kamera expo misalnya)
sumber
Anda dapat menggunakan modul react-native-display saya untuk menampilkan / menyembunyikan komponen.
sumber
Contoh berikut adalah pengkodean dalam naskah dengan Hooks.
sumber
sumber
Sangat mudah. Cukup ubah ke () => this.showCancel () seperti di bawah ini:
sumber
saya hanya menggunakan metode di bawah ini untuk menyembunyikan atau melihat tombol. berharap ini akan membantu anda. hanya memperbarui status dan menambahkan sembunyikan css sudah cukup bagi saya
sumber
Sebenarnya, dalam pengembangan iOS
react-native
saat saya menggunakandisplay: 'none'
atau sesuatu seperti di bawah ini:IOS tidak memuat komponen gambar seperti
onLoad
atau dll, jadi saya memutuskan untuk menggunakan sesuatu seperti di bawah ini:sumber
Satu-satunya cara untuk menampilkan atau menyembunyikan komponen dalam reaksi asli adalah memeriksa nilai parameter keadaan aplikasi seperti
state
atauprops
. Saya memberikan contoh lengkap seperti di bawah ini:sumber
Jika Anda ingin menyembunyikannya, tetapi simpan ruang yang ditempati oleh komponen seperti
visibility: hidden
pengaturan css dalam gaya komponenopacity: 0
harus melakukan trik.Tergantung pada komponen, langkah-langkah lain dalam menonaktifkan fungsionalitas mungkin diperlukan karena interaksi dengan item yang tidak terlihat dimungkinkan.
sumber
Anda dapat menggunakan kondisi untuk menampilkan dan menyembunyikan komponen
sumber
itu saja. nikmati kode Anda ...
sumber