Cacher/Montrer les composants de réagir natif
Je suis vraiment nouveau à Réagir Natif et je me demandais comment puis-je afficher/masquer un composant.
Voici mon cas de test:
<TextInput
onFocus={this.showCancel()}
onChangeText={(text) => this.doSearch({input: text})} />
<TouchableHighlight
onPress={this.hideCancel()}>
<View>
<Text style={styles.cancelButtonText}>Cancel</Text>
</View>
</TouchableHighlight>
J'ai un TextInput
composant, ce que je veux, c'est montrer le TouchableHighlight
lorsque l'entrée reçoit le focus, puis se cacher la TouchableHighlight
lorsque l'utilisateur presse le bouton annuler.
Je ne sais pas comment "l'accès" à la TouchableHighlight
composant dans le but de cacher/montrer l'intérieur de mes fonctions showCancel/hideCancel
.
Aussi, comment puis-je cacher le bouton dès le début?
- vous avez besoin de vérifier cet exemple : Afficher/Masquer les composants réagissent natif
Vous devez vous connecter pour publier un commentaire.
Je voudrais faire quelque chose comme ceci:
return ''
àreturn null
{someBoolVal && <Component />}
et il affiche uniquement si la valeur booléenne est vraie.{bool ? <Component /> : <OtherComponent />}
Dans votre fonction rendu:
Puis il suffit de faire:
{ this.state.showTheThing && (<Text>foo</Text> && <Text>bar</Text>)}
seulement "bar" est affichée dans l'INTERFACE. Je m'attends à "foo" et "bar" sera affiché. Ce que j'ai besoin de faire pour résoudre ce problème est d'appeler{ this.state.showTheThing && (<Text>foo</Text>} { this.state.showTheThing && (<Text>bar</Text>}
&&
pas de combiner des éléments{ this.state.showTheThing && (<View><Text>foo</Text><Text>bar</Text></View>)}
{this.state.hasPic && <Button title="Go to next step" onPress={this._nextStep} />}
De réagir ou de réagir natif de la façon dont la composante masquer/afficher ou ajouter/supprimer ne fonctionne pas comme sur android ou iOS. La plupart d'entre nous pense qu'il y aurait la stratégie similaire comme
Mais la manière de réagir natif de travail est complètement différent. La seule façon d'obtenir ce type de fonctionnalité est d'inclure votre composant dans votre DOM ou retirer de DOM.
Ici dans cet exemple, je vais définir la visibilité de l'affichage du texte basé sur le bouton cliquez sur.
L'idée derrière cette tâche est de créer une variable d'état appelé état ayant la valeur initiale définie à false lorsque l'événement click du bouton en est-il alors de la valeur de bascule. Nous allons maintenant utiliser cette variable d'état lors de la création du composant.
la seule chose à remarquer dans cet extrait de code est
renderIf
qui est en fait une fonction qui renvoie le composant est passé basé sur la valeur booléenne est passé.dans render (), vous pouvez conditionnellement montrer le JSX ou de retourner la valeur null comme dans:
J'avais besoin de basculer entre les deux images. Avec conditionnelle de commutation entre eux, il y a 5 secondes de retard avec aucune image affichée.
Je suis en utilisant une approche de downvoted amos réponse. Poste en tant que nouvel élément de réponse car il est difficile de mettre le code en commentaire avec une mise en forme appropriée.
Fonction rendu:
Styles:
La plupart du temps, je suis en train de faire quelque chose comme ceci :
Si vous êtes le genre de la nouvelle à la programmation, cette ligne doit être étrange pour vous :
Cette ligne est équivalente à
Mais vous ne pouvez pas écrire un if/else condition dans JSX contenu (par exemple, le retour (partie) d'une fonction rendu), de sorte que vous aurez à utiliser cette notation.
Cette petite astuce peut être très utile dans de nombreux cas, et je vous suggère de l'utiliser dans vos développements, car vous pouvez rapidement vérifier une condition.
Ce qui concerne,
Cacher Et Montrer parent vue de
Activity Indicator
Cacher et Montrer comme suit
Référence complète
Sur le Bouton presss état fixée comme suit
Lorsque vous avez besoin de cacher
suffit d'utiliser
J'ai eu le même problème lorsque je veux afficher /masquer les points de Vue, mais je n'ai vraiment pas envie de l'INTERFACE utilisateur de sauter partout quand les choses ont été ajoutées/supprimées ou nécessairement à traiter avec la ré-rendu.
J'ai écrit un Composant simple de traiter avec elle pour moi. Animés par défaut, mais facile à basculer. Je l'ai mis sur GitHub et NPM avec un readme, mais tout le code est ci-dessous.
npm install --save react-native-hideable-view
visible && (...)
.Une autre option consiste à appliquer positionnement absolu par style, le réglage du composant masqué dans des coordonnées de l'écran:
Contrairement à certaines des suggestions précédentes, cela permettrait de masquer votre composant de la vue MAIS aussi le rendre (le garder dans les DOM), il est vraiment invisible.
Réagir Natif de la mise en page a l'
display
support de la propriété, semblables aux feuilles de style CSS.Valeurs possibles:
none
etflex
(par défaut).https://facebook.github.io/react-native/docs/layout-props#display
Vous pouvez utiliser mon module réagir-native-affichage pour afficher/masquer des composants.
Si vous avez besoin de la composante de rester chargé, mais masquée, vous pouvez définir l'opacité à 0. (J'avais besoin de cela pour l'expo de la caméra par exemple)
Très Facile. Il suffit de changer d' () => ce.showCancel() comme ci-dessous:
je suis juste en utilisant la méthode ci-dessous pour masquer ou afficher un bouton. espérons qu'il saura vous aider. juste statut de mise à jour et l'ajout de cacher css est assez pour moi
En fait, dans le développement d'iOS par
react-native
lorsque j'utilisedisplay: 'none'
ou quelque chose comme ci-dessous:L'iOS n'a pas de charger quoi que ce soit de l'Image composant comme
onLoad
ou etc, j'ai donc décidé d'utiliser quelque chose comme ci-dessous: