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
View.hide = true or parentView.addSubView(childView)
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.
import renderIf from './renderIf'
class FetchSample extends Component {
constructor(){
super();
this.state ={
status:false
}
}
toggleStatus(){
this.setState({
status:!this.state.status
});
console.log('toggle button handler: '+ this.state.status);
}
render() {
return (
<View style={styles.container}>
{renderIf(this.state.status)(
<Text style={styles.welcome}>
I am dynamic text View
</Text>
)}
<TouchableHighlight onPress={()=>this.toggleStatus()}>
<Text>
touchme
</Text>
</TouchableHighlight>
</View>
);
}
}
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.
renderIf(predicate)(element)
renderif.js
'use strict';
const isFunction = input => typeof input === 'function';
export default predicate => elemOrThunk =>
predicate ? (isFunction(elemOrThunk) ? elemOrThunk() : elemOrThunk) : null;